zoukankan      html  css  js  c++  java
  • POJ 1321 棋盘问题

    中文题, 题目不再解释, 简单dfs;
     
    #include <cstdio>
    
    #include <cstring>
    
    #include <cstdlib>
    
    #include <cmath>
    
    #include <cctype>
    
    
    
    bool maps[10][10];//maps做棋盘,判断此点能不能下棋 maps[0][i]用来记录第i列能不能下棋
    
    int n, k, ans, hang;//hang代表此刻在第几行下棋
    
    
    
    void DFS(int k)
    
    {
    
        if(k == 0) {//棋子放完
    
            ans++;
    
            return;
    
        }
    
        if(hang > n)//已检查行数大于等于n,此时k还未等于0;
    
            return;
    
        if(n - hang + 1 < k)//剩下行数不够棋子数
    
            return;
    
        hang++;
    
        for(int j = 1; j <= n; j++) {
    
            if(maps[0][j]) continue;
    
            if(!maps[hang][j]) continue;
    
            maps[0][j] = true;
    
            DFS(k - 1);
    
            maps[0][j] = false;
    
        }
    
        //如果此行没有棋子可放, 检查下一行
    
        DFS(k);
    
        hang--;
    
    }
    
    
    
    int main()
    
    {
    
        char ch;
    
        while(~scanf("%d %d", &n, &k), n != -1 || k != -1) {
    
            memset(maps, false, sizeof(maps));
    
            ans = 0;
    
            for(int i = 1; i <= n; i++) {
    
                scanf(" ");
    
                for(int j = 1; j <= n; j++) {
    
                    scanf("%c", &ch);
    
                    if(ch == '#') maps[i][j] = true;
    
                }
    
            }
    
            
    
            hang = 1;
    
            for(int j = 1; j <= n; j++) {
    
                if(maps[0][j]) continue;
    
                if(!maps[hang][j]) continue;
    
                maps[0][j] = true;
    
                DFS(k - 1);
    
                maps[0][j] = false;//回溯
    
            }
    
            DFS(k);
    
            printf("%d\n", ans);
    
        }
    
    }
  • 相关阅读:
    对百度搜索引擎的评论
    团队开发个人总结05
    Bootsrap下拉菜单实现Hover下拉效果
    C#抽奖优惠券生成唯一码方法
    js.live方法无效, 报错:uncaught TypeError: $(...).live is not a function
    SQL 插入一条自定义主键值的数据
    一款很简单的直接发送邮件功能
    SQL生成指定范围内随机值
    SQL(replace)替换字段中指定的字符
    SQL表中删除一列
  • 原文地址:https://www.cnblogs.com/wangyuhao/p/4662087.html
Copyright © 2011-2022 走看看