【题目链接】
【算法】
只要第一行第一个数确定了,后面的数也都确定了
递推两遍即可
【代码】
#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\n",ans);
return 0;
}