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