备考蓝桥杯:枚举算法之扫雷
..
P2327 [SCOI2005] 扫雷 - 洛谷 | 计算机科学教育新生态
这道题,第一个格子是0是一种情况,第二种格子是1又是一种情况,所以可能的拜访方案是0,1,2个
好的,算法原理讲解完毕,我们来实现一下代码
#include <iostream>
using namespace std;
const int N = 1e4+10;
int a[N],b[N];
int n;
int check1()
{
a[1] = 0;
for(int i = 2;i<=n+1;i++)
{
a[i] = b[i-1] - a[i-1] - a[i-2];
if(a[i]!=0 && a[i]!=1) return 0;
}
if(a[n+1]) return 0;
return 1;
}
int check2()
{
a[1] = 1;
for(int i = 2;i<=n+1;i++)
{
a[i] = b[i-1] - a[i-1] - a[i-2];
if(a[i]!=0 && a[i]!=1) return 0;
}
if(a[n+1]) return 0;
return 1;
}
int main()
{
cin >> n;
for(int i = 1;i<=n;i++) cin >> b[i];
int ret = 0;
ret+=check1();ret+=check2();
cout << ret << endl;
return 0;
}