题解 | #[SCOI2005]扫雷MINE#

[SCOI2005]扫雷MINE

https://ac.nowcoder.com/acm/problem/20241

题意 有个2*n的地图,规则和扫雷一样,第二列没雷,给定第二列的数,求有几种情况可以满足第二列
思路 后面有没有雷可以根据第一个数推出来,也是唯一的,所以最多只有两种可能
枚举即可,因为最后一个数也是只有两个地方相关,所以要特判

#include<iostream>
using namespace std;
int a[10010],b[10010];
int main()
{
    int n,ans=0;
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    if(a[1]>=1)
    {
    b[1]=1;
        for(int i=2;i<=n;i++)
        {
            b[i]=a[i-1]-b[i-1]-b[i-2];
            if(b[i]>1||b[i]<0)
            {
                ans--;
                break;
            }
            if(i==n&&a[n]!=(b[n]+b[n-1]))
                ans--;
        }
        ans++;
    }
    b[1]=0;
     for(int i=2;i<=n;i++)
        {
            b[i]=a[i-1]-b[i-1]-b[i-2];
            if(b[i]>1||b[i]<0)
            {
                ans--;
                break;
            }
         if(i==n&&a[n]!=(b[n]+b[n-1]))
                ans--;
        }
        ans++;
    cout<<ans<<endl;

}
全部评论

相关推荐

11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
11-04 14:10
东南大学 Java
_可乐多加冰_:去市公司包卖卡的
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务