POJ-1321-棋盘问题

来源:互联网 发布:r语言编程代码 编辑:程序博客网 时间:2024/06/11 09:35

这个题和8皇后有点像,用vis数组来记录当前列是否能放

题目链接:点击打开链接

AC代码:

#include<iostream>#include<cstring>#include<cstdio>#include<queue>#include<algorithm>using namespace std;typedef long long ll;const int N=1000;int n,k;int vis[N];int res;char mp[N][N];#define MM(x,y) memset(x,y,sizeof(x))void dfs(int row,int num){    if(num==k)    {        res++;        return ;    }    else    {        for(int i=row+1;i<=n;i++)        {            for(int j=1;j<=n;j++)            {                if(mp[i][j]=='#'&&!vis[j])                {                    vis[j]=1;                    dfs(i,num+1);                    vis[j]=0;                }            }        }    }}int main(){    int i,j;    while(cin>>n>>k)    {        MM(vis,0);        MM(mp,0);        res=0;        if(n==-1&&k==-1)            break;        for(i=1;i<=n;i++)            cin>>mp[i]+1;        dfs(0,0);        cout<<res<<endl;    }    return 0;}


原创粉丝点击