BZOJ 1088 [SCOI2005]扫雷Mine

没居前两个格,然后剩下的所有格子情况就确定了~

 

View Code
 1 #include <iostream>

 2 #include <cstdlib>

 3 #include <cstdio>

 4 #include <cstring>

 5 #include <algorithm>

 6 

 7 #define N 11000

 8 

 9 using namespace std;

10 

11 int gs[N],bh[N];

12 int n,ans;

13 

14 inline void read()

15 {

16     scanf("%d",&n);

17     for(int i=1;i<=n;i++) scanf("%d",&gs[i]);

18 }

19 

20 inline void gofor()

21 {

22     for(int i=2,fr;i<=n;i++)

23     {

24         fr=bh[i]+bh[i-1];

25         if(fr==gs[i]) bh[i+1]=0;

26         else if(fr==gs[i]-1) bh[i+1]=1;

27         else return;

28     }

29     if(bh[n+1]==0) ans++;

30 }

31 

32 inline void go()

33 {

34     if(n==1)

35     {

36         if(gs[1]<=1) ans++;

37         return;

38     }

39     for(int i=0;i<=1;i++)

40         for(int j=0;j<=1;j++)

41         {

42             bh[1]=i; bh[2]=j;

43             int tmp=i+j;

44             if(gs[1]!=tmp) continue;

45             gofor();

46         }

47     printf("%d\n",ans);

48 }

49 

50 int main()

51 {

52     read();

53     go();

54     return 0;

55 }

 

 

你可能感兴趣的:(ZOJ)