zoukankan      html  css  js  c++  java
  • VJP1193 扫雷(状压)

    链接

    保存当前行和前一行两行的状态 

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 using namespace std;
     7 #define N 10010
     8 int a[N],dp[4][4][N],d[4]={0,1,1,2};
     9 int main()
    10 {
    11     int i,j,k,n,g;
    12     while(scanf("%d",&n)!=EOF)
    13     {
    14         memset(dp,0,sizeof(dp));
    15         for(i = 1; i <= n ; i++)
    16         scanf("%d",&a[i]);
    17         if(n==1)
    18         {
    19             printf("1
    ");
    20             continue;
    21         }
    22         for(i = 0 ; i <= 1 ; i++)
    23         {
    24             for(j = 0; j <= 1 ; j++)
    25             if(i+j==a[1])
    26             dp[i][j][2] = 1;
    27         }
    28         for(i =3 ; i <= n ; i++)
    29         {
    30             for(j = 0 ; j < 2 ; j++)
    31             {
    32                 if(j>a[i]||j>a[i-1])
    33                 continue;
    34                 for(g = 0 ; g < 2 ; g++)
    35                 {
    36                     if(j+g>a[i]||j+g>a[i-1])
    37                     continue;
    38                     for(int e = 0 ; e < 2 ; e++)
    39                     {
    40                         if(j+g+e==a[i-1])
    41                         dp[j][g][i] += dp[g][e][i-1];
    42                     }
    43                 }
    44             }
    45         }
    46         int ans=0;
    47         for(i = 0 ; i < 2 ; i++)
    48             for(j = 0 ; j < 2 ; j++)
    49             if(i+j==a[n])
    50             ans+=dp[i][j][n];
    51         printf("%d
    ",ans);
    52     }
    53     return 0;
    54 }
    View Code
  • 相关阅读:
    零碎
    Python学习 day03 (续day02)
    Python学习 day02
    Python学习 Day1
    线性表——顺序表
    纠删码简介
    小数转化为分数
    C语言多线程操作
    转载:RAMCloud
    转载:全球级分布式数据库Google Spanner
  • 原文地址:https://www.cnblogs.com/shangyu/p/3267869.html
Copyright © 2011-2022 走看看