1088: [SCOI2005]扫雷Mine
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 659 Solved: 386
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1 1
Sample Output
#include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<functional> #include<cmath> using namespace std; #define MAXN (10000+10) int n,a[MAXN]; int f[MAXN][2][2]={0}; //Middle and 1 int main() { cin>>n; for (int i=1;i<=n;i++) cin>>a[i]; switch (a[1]) { case 2:f[1][1][1]++;break; case 0:f[1][0][0]++;break; default:f[1][0][1]=f[1][1][0]=1; } for (int i=2;i<=n;i++) { switch (a[i]) { case 3:f[i][1][1]=f[i-1][1][1];break; case 0:f[i][0][0]=f[i-1][0][0];break; case 2:f[i][1][0]=f[i-1][1][1];f[i][0][1]=f[i-1][1][0];f[i][1][1]=f[i-1][0][1];break; case 1:f[i][1][0]=f[i-1][0][1];f[i][0][1]=f[i-1][0][0];f[i][0][0]=f[i-1][1][0];break; } } cout<<f[n][1][0]+f[n][0][0]<<endl; return 0; }