[BZOJ1088]-[SCOI2005]扫雷Mine-简单dp

来源:互联网 发布:hbuilder 商城app源码 编辑:程序博客网 时间:2024/05/16 04:36

说在前面

つまらない


题目

BZOJ1088传送门
这不是一道权限题,就不复制题面了=w=


解法

显然dp
记录一下当前和上一个的状态转移就好,符合输入要求的才转移


下面是自带大常数的代码

/**************************************************************    Problem: 1088    User: Izumihanako    Language: C++    Result: Accepted    Time:16 ms    Memory:1016 kb****************************************************************/#include <cstdio>#include <cstring>#include <algorithm>using namespace std ;int dp[10005][2][2] , a[10005] , N ;int main(){    scanf( "%d" , &N ) ;    register int i , las , llas , now ;    for( i = 1 ; i <= N ; i ++ )        scanf( "%d" , &a[i] ) ;    dp[1][0][1] = dp[1][0][0] = 1 ;    for( i = 2 ; i <= N + 1 ; i ++ )        for( las = 0 ; las <= 1 ; las ++ )            for( llas = 0 ; llas <= 1 ; llas ++ )                for( now = 0 ; now <= 1 ; now ++ )                    if( las+llas+now == a[i-1] )                        dp[i][las][now] += dp[i-1][llas][las] ;    printf( "%d" , dp[N+1][0][0] + dp[N+1][1][0] ) ;}