
一、核心思路
本题通过枚举雷的初始状态(有雷/无雷),从而递推出雷的分布,同时检验雷的合法性。
二、细节注意
每个位置雷的状态只可能是1或0。
对于n+1位置处,没有雷。
三、代码实现
cpp
const int N = 1e4 + 10;
int a[N], b[N];
int main()
{
int n; cin >> n;
int cnt = 0;
for (int i = 1; i <= n; i++) cin >> b[i];
for (int j = 0; j <= 1; j++)
{
a[1] = j;
bool flag = true;
for (int i = 1; i <= n; i++)
{
a[i+1] = b[i] - a[i] - a[i-1];
if (a[i] < 0 || a[i] > 1)
{
flag = false;
break;
}
}
if (flag && a[n+1] == 0) cnt++;
}
cout << cnt << endl;
return 0;
}