我们可以发现。。。最开始的两个。。。只有两种情况。。。直接枚举一下。。。递推出结果好了。。。
呆码:
#include<iostream> #include<cstring> using namespace std; int n,a[100001],b[100001],ans; int main() { cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=0;i<=a[1];i++) { memset(b,0,sizeof(b)); b[1]=i;b[2]=a[1]-i; for(int j=3;j<=n+1;j++) b[j]=a[j-1]-b[j-1]-b[j-2]; if(!b[n+1]) ans++; } cout<<ans; } // b[i-2]+b[i-1]+b[i]=a[i-1] // b[i-1]+b[i]+b[i+1]=a[i] // b[i]+b[i+1]+b[i+2]=a[i+1]