http://poj.org/problem?id=1321
8皇后的变形
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
char map[10][10];
int vis[10][10];
int n,k,ans;
void dfs(int num,int i)
{
if(num==k) {ans++; return;}
for(int j=0;j<n;j++)
{
if(vis[i][j]==0&&map[i][j]=='#')
{
vis[i][j]=1;
int flag=true;
for(int m=0;m<i;m++)
{
if(vis[m][j]==1) {flag=false; break;}
}
if(flag) dfs(num+1,i+1);
vis[i][j]=0;
}
}
if(i+1<n) dfs(num,i+1);
}
int main()
{
while(scanf("%d%d",&n,&k)!=EOF)
{
if(k==-1&&n==-1) break;
ans=0;
memset(vis,0,sizeof(vis));
for(int i=0;i<n;i++)
scanf("%s",map[i]);
dfs(0,0);
printf("%d\n",ans);
}
return 0;
}
poj 1321 棋盘问题
最新推荐文章于 2022-07-29 20:54:45 发布