• poj 1321 棋盘问题(dfs)


    题目链接:http://poj.org/problem?id=1321

            按行搜索,当前棋格所在列无棋子且当前位置可放棋子时搜索下一位置(k-1)。若当前行无法放置,搜索下一行(k)。

    代码:

    #include<iostream>
    #include
    <cstring>
    using namespace std ;
    char a[8][8] ;
    bool b[8] ;             //记录第i列是否放了棋子
    int count, n ;
    int dfs(int r, int k){
        
    if(k==0){           //所有棋子放完则产生一个新方案
            count ++ ;
            
    return count ;
        }
        
    if(r>=n)    return count ;      //搜索完毕
        for(int j=0; j<n; j++){
            
    if(b[j]&&a[r][j]=='#'){
                b[j] 
    = false ;
                dfs(r
    +1, k-1) ;
                b[j] 
    = true ;           //回溯
            }
        }
        dfs(r
    +1, k) ;
    }

    int main(){
        
    int k, i, j ;
        
    while(true){
            cin 
    >> n >> k ;
            
    if(n==-1&&k==-1)    break ;
            count 
    = 0 ;
            
    for(i=0; i<n; i++){
                
    for(j=0; j<n; j++){
                    cin 
    >> a[i][j] ;
                }
            }
            memset(b, 
    truesizeof(b)) ;
            cout 
    << dfs(0, k) << endl ;
        }
        
    return 0 ;
    }
  • 相关阅读:
    第二阶段~JS中的各种循环语句
    项目一~达人美食图册详情
    项目一~达人行程
    项目一~美食达人图册
    项目一~机票2
    项目一~达人首页
    项目一~Hotel5
    pythonday02基础与运算符
    pythonday01计算机初步认识
    第六章 百度Apollo ROS介绍(2)
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2162544.html
Copyright © 2020-2023  润新知