zoukankan      html  css  js  c++  java
  • HDU_1760 A New Tetris Game(dfs + 博弈)

      用dfs搜索每种情况所对应的sg值(这里也就是对应的是N位还是P位),若下一步为P位,则当前一步为N位。。。

    代码:

    #include <iostream>
    #include <cstdio>

    using namespace std;

    const int N = 55;

    char map[N][N];
    int m, n;

    int judge(int i, int j){
    if(map[i][j] == '0' && map[i][j+1] == '0' && map[i+1][j] == '0' && map[i+1][j+1] == '0'){
    map[i][j] = map[i][j+1] = map[i+1][j] = map[i+1][j+1] = '1';
    return 1;
    }
    return 0;
    }

    void recover(int i, int j){
    map[i][j] = map[i][j+1] = map[i+1][j] = map[i+1][j+1] = '0';
    }

    int dfs(){
    for(int i = 0; i < n; i++){
    for(int j = 0; j < m; j++){
    if(judge(i, j)){
    if(!dfs()){
    recover(i, j);
    return 1;
    }
    recover(i, j);
    }
    }
    }
    return 0;
    }

    int main(){
    freopen("data.in", "r", stdin);

    while(~scanf("%d%d", &n, &m)){
    getchar();
    for(int i = 0; i < n; i++){
    for(int j = 0; j < m; j++){
    scanf("%c", &map[i][j]);
    }
    getchar();
    }
    if(dfs()) puts("Yes");
    else puts("No");
    }
    return 0;
    }



  • 相关阅读:
    5.5,5.6
    5.1,5.2
    第四章.编程练习
    多源最短路径--flody算法
    Java 面试题
    python 打包exe程序
    sql优化
    二叉树
    todo: 队列、栈、散列集
    java注解
  • 原文地址:https://www.cnblogs.com/vongang/p/2208499.html
Copyright © 2011-2022 走看看