[bzoj1088][SCOI2005]扫雷Mine
给你一个n*2的扫雷游戏,第二行没有雷,告诉你第二行每一个格子周围有几个雷,求可能的方案数量。
类型:一股清流
思路:二逼题,确定了前两项,每一项都能从前两项确定,check一下就可以了
难度:普及组。
#include<iostream> #include<cstdio> using namespace std; inline int read() { int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();} return x*f; } int n,ans=0; int s[10005],f[10005]; int check() { if(f[1]+f[2]!=s[1]) return 0; for(int i=3;i<=n;i++) { f[i]=s[i-1]-f[i-1]-f[i-2]; if(f[i]<0||f[i]>1)return 0; } if(f[n]+f[n-1]!=s[n]) return 0; return 1; } int main() { n=read();if(n==1) return 0*puts("1"); for(int i=1;i<=n;i++) s[i]=read(); ans+=check(); f[1]=1;ans+=check(); f[2]=1;ans+=check(); f[1]=0;ans+=check(); cout<<ans; return 0; }
FallDream代表秋之国向您问好!
欢迎您来我的博客www.cnblogs.com/FallDream