luogu_2327 扫雷

#include <cstdio>
#include <iostream>
using namespace std;
const int N=10010;
int n,a[N],b[N],sum;//1 有雷 0 无雷 

inline int read(){
	char c; int x=0;
	while(c<48)c=getchar();
	while(c>=48){
		x=x*10+c-'0';
		c=getchar();
	}
	return x;
}

int main(){
	n=read();
	for(int i=1;i<=n;i++)b[i]=read();
	if(b[1]==2){
		a[1]=1; a[2]=1;
		for(int i=3;i<=n;i++){
			a[i]=b[i-1]-a[i-2]-a[i-1];
			if(a[i]!=0 && a[i]!=1)break;
			if(i==n && a[i-1]+a[i]==b[i])sum++;
		}
		cout<<sum<<endl;
		return 0;
	}
	if(b[1]==0){
		a[1]=0; a[2]=0;
		for(int i=3;i<=n;i++){
			a[i]=b[i-1]-a[i-2]-a[i-1];
			if(a[i]!=0 && a[i]!=1)break;
			if(i==n && a[i-1]+a[i]==b[i])sum++;
		}
		cout<<sum<<endl;
		return 0;
	}
	a[1]=1; a[2]=0;
	for(int i=3;i<=n;i++){
		a[i]=b[i-1]-a[i-2]-a[i-1];
		if(a[i]!=0 && a[i]!=1)break;
		if(i==n && a[i-1]+a[i]==b[i])sum++;
	}
	a[1]=0; a[2]=1;
	for(int i=3;i<=n;i++){
		a[i]=b[i-1]-a[i-2]-a[i-1];
		if(a[i]!=0 && a[i]!=1)break;
		if(i==n && a[i-1]+a[i]==b[i])sum++;
	}
	cout<<sum<<endl;
	return 0;
}

  

posted @ 2017-09-24 20:46  wqtnb_tql_qwq_%%%  阅读(106)  评论(0编辑  收藏  举报