题目描述
输入输出格式
输入格式:
第一行为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; }