zoukankan      html  css  js  c++  java
  • hdu 2147 kiki's game(DP(SG)打表找规律)

    题意:

    n*m的棋盘,一枚硬币右上角,每人每次可将硬币移向三个方向之一(一格单位):左边,下边,左下边。

    无法移动硬币的人负。

    给出n和m,问,先手胜还是后手胜。

    数据范围:

    n, m (0<n,m<=2000)

    思路:

    dp[i][j]=0,说明从(i,j)这个点到时左下角先手败。dp[i][j]=1则先手胜。

    然后记忆搜。但是记忆搜会超时。

    搜完把整张表打出来,发现规律了,,,,然后,,,代码剩几行了。

    代码:

    ///打表观察
    
    /*
    int f[2005][2005];
    
    int go(int n,int m){ //0:必败 1:必胜
        if(f[n][m]!=-1) return f[n][m];
        int a1 = n-1, b1 = m;
        int a2 = n, b2 = m-1;
        int a3 = n-1,b3 = m-1;
    
        if(a1>=1 && b1>=1 && go(a1,b1)==1) return f[n][m] = 0;
        if(a2>=1 && b2>=1 && go(a2,b2)==1) return f[n][m] = 0;
        if(a3>=1 && b3>=1 && go(a3,b3)==1) return f[n][m] = 0;
        return f[n][m] = 1;
    }
    */
    
    int main(){
        int n,m;
    
        while(scanf("%d%d",&n,&m),n||m){
            /*
            rep(i,1,n)
                rep(j,1,m) f[i][j] = -1;
    
            f[1][1] = 0;
    
            go(n,m);
    
            rep(i,1,n){
                rep(j,1,m) printf("%d",f[i][j]); cout<<endl;
            }
            */
            if(n%2 && m%2)
                puts("What a pity!");
            else
                puts("Wonderful!");
        }
    }
  • 相关阅读:
    ORM中的事务和锁
    双下划线跨表查询 聚集查询 分组查询 FQ查询
    cookie和session
    多表查询
    单表查询
    ORM
    Djangon之模板
    Django之视图函数
    Django之URL路由系统
    web框架的本质及自定义web框架
  • 原文地址:https://www.cnblogs.com/fish7/p/4003543.html
Copyright © 2011-2022 走看看