這道題純粹嚇人的,看完題發現總共就兩列,最開始想一個個進行枚舉,發現費時費力還過不了,後來仔細一看,只要枚舉前兩個格子的四種狀況後面的就全出來了,中間加個判斷不符合減一就好了,結果絕對小於等於4。ios
代碼以下:spa
#include<iostream> #include<cstdlib> #include<cstdio> using namespace std; int i_long; int i_nob[10000]; int i_lei[10000],ans=4; int main() { cin>>i_long; for(int i=1;i<=i_long;i++) { cin>>i_nob[i]; } for(int i=0;i<=1;i++) { for(int j=0;j<=1;j++) { i_lei[1]=i;i_lei[2]=j; for(int m=3;m<=i_long;m++) { i_lei[m]=i_nob[m-1]-i_lei[m-1]-i_lei[m-2]; } for(int n=1;n<=i_long;n++) { if(i_lei[n]<0||i_lei[n-1]+i_lei[n]+i_lei[n+1]!=i_nob[n]) { ans--; break; } } } } cout<<ans<<endl; return 0; }