【SCOI 2005】 扫雷

【题目链接】

            点击打开链接

【算法】

          只要第一行第一个数确定了,后面的数也都确定了

          递推两遍即可

【代码】

        

#include<bits/stdc++.h>
using namespace std;
#define MAXN 10010

int i,n,ans;
int a[MAXN],b[MAXN];

inline bool ok()
{
        int i;
        b[2] = a[1] - b[1];
        if (b[2] < 0 || b[2] > 1) return false;
        for (i = 3; i <= n; i++)
        {
                b[i] = a[i-1] - b[i-1] - b[i-2];
                if (b[i] < 0 || b[i] > 1) return false;
        }    
        if (b[n-1] + b[n] != a[n]) return false;
        else return true;
}

int main() 
{
        
        scanf("%d",&n);
        for (i = 1; i <= n; i++) scanf("%d",&a[i]);
        
        b[1] = 0;
        ans += ok();
        b[1] = 1;
        ans += ok();
        
        printf("%d
",ans);
         
        return 0;
    
}
原文地址:https://www.cnblogs.com/evenbao/p/9196340.html