题目描述
输入输出格式
输入格式:
第一行为N,第二行有N个数,依次为第二列的格子中的数。(1<= N <= 10000)
输出格式:
一个数,即第一列中雷的摆放方案数。
输入输出样例
输入样例#1:
2 1 1
输出样例#1:
2
首先答案在【0,2】区间内(很明显嘛,要是可能性很多,谁还扫雷啊)。
然后我就判断第一个点有雷和没雷两种情况,若成立结果加 1.
#include<iostream> #include<queue> #include<cstdio> #include<algorithm> #include<math.h> #include<string.h> using namespace std; int n,a[10009]; int b[10009]; bool work() { b[0]=0; for(int i=1;i<=n;i++) { b[i+1]=a[i]-b[i-1]-b[i]; if(b[i+1]>1||b[i]<0) return 0; } if(b[n+1]==0) return 1; return 0; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); int ans=0; for(b[1]=0;b[1]<2;++b[1]) ans+=work(); cout<<ans; return 0; }