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

    题目  中文题目,题意不在赘述,思路代码中。

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    
    char mp[10][10];
    int vis[10];
    int cnt = 0;
    int n,k;
    /**
        采用的是按行递增的顺序来搜索的, 
        因此不可能出现同行的情况, 
        对于同列的情况,设置一个变量vis[],来保存列的访问状态,
        对于之前访问过的列, 棋子是不能再放在这一列上的.
    */
    int dfs(int x,int y)//第x行,放第y颗棋子
    {
        if(y>=k){
            cnt++;//记录这个方案可行
            return 0;
        }
        for(int i=x;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(mp[i][j]=='#'&&!vis[j])
                {
                    vis[j]=1;
                    dfs(i+1,y+1);//搜素下一行
                    vis[j]=0;
                }
            }
        }
        return 0;
    }
    int main()
    {
        while(cin>>n>>k)
        {
            if(n==-1&&k==-1) break;
            for(int i=0;i<n;i++)
                cin>>mp[i];
            memset(vis,0,sizeof(vis));
             cnt = 0;
            dfs(0,0);
            cout<<cnt<<endl;
        }
        return 0;
    }
    
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    
    char mp[10][10];
    int vis[10];
    int res = 0,n,k,cnt=0;
    void dfs(int x)
    {
        if(cnt==k){
            res++;
            return ;
        }
        if(x<0||x>=n) return ;
           for(int j=0;j<n;j++)
           {
               if(mp[x][j]=='#'&&vis[j]==0){
                    cnt++;
                    vis[j]=1;
                    dfs(x+1);
                    vis[j]=0;
                    cnt--;
               }
           }
        dfs(x+1);
    }
    int main()
    {
        while(cin>>n>>k)
        {
            if(n==-1&&k==-1) break;
            for(int i=0;i<n;i++)
                cin>>mp[i];
            dfs(0);
        cout<<res<<endl;
        memset(mp,0,sizeof(0));
            res = 0;
        }
        return 0;
    }
  • 相关阅读:
    Maven ==> 简介
    IDEA结合GIT的使用
    Shell ==> 基础
    Dubbo ==> 简介
    iptables防火墙
    文件系统对比
    supervisord部署
    inotify+rsync安装配置
    前端插件网址
    Nginx高级玩法
  • 原文地址:https://www.cnblogs.com/qie-wei/p/10160132.html
Copyright © 2011-2022 走看看