1. 程式人生 > >[SCOI2005]掃雷

[SCOI2005]掃雷

style void clas 掃雷 load span 個數 一行 輸出格式

題目描述

技術分享

輸入輸出格式

輸入格式:

第一行為N,第二行有N個數,依次為第二列的格子中的數。(1<= N <= 10000)

輸出格式:

一個數,即第一列中雷的擺放方案數。

輸入輸出樣例

輸入樣例#1: 復制
2
1  1
輸出樣例#1: 復制
2

思路

顯然枚舉第一個位置是否存在地雷,其他的都可以依次導出,或者出現矛盾;

代碼

 1 #include<cstdio>
 2 const int maxn=1e4+10
; 3 int n,ans; 4 int s[maxn],f[maxn]; 5 void dfs(int k,int v){ 6 f[k]=v; 7 if(k==n){ 8 if(f[k-1]+f[k]==s[k]) ans++; 9 return; 10 } 11 if(f[k-1]+f[k]==s[k]) dfs(k+1,0); 12 if(f[k-1]+f[k]==s[k]-1) dfs(k+1,1); 13 } 14 int main(){ 15 scanf("%d",&n);
16 for(int i=1;i<=n;i++) scanf("%d",&s[i]); 17 dfs(1,1); 18 dfs(1,0); 19 printf("%d",ans); 20 return 0; 21 }

[SCOI2005]掃雷