您的位置:首页 > 其它

poj 1321 棋盘问题

2013-08-08 14:37 246 查看
题目:
http://poj.org/problem?id=1321
八皇后问题,用dfsj即可。

源代码:

#include <iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
int a[10][10];
int visit[10];
int n,k,sum;
__int64 ans;

void dfs(int x){
int i,j;
for(i=x+1;i<n;i++)
for(j=0;j<n;j++){
if(a[i][j]&&visit[j]==0){
visit[j]=1;
sum++;
if(sum==k){
ans++;
}
else dfs(i);
sum--;
visit[j]=0;
}
}
}
int main()
{ char ch;
int i,j;
while(scanf("%d %d",&n,&k)){
if(n==-1&&k==-1) break;
memset(visit,0,sizeof(visit));
ans=0;
for(i=0;i<n;i++){
getchar();
for(j=0;j<n;j++){
scanf("%c",&ch);
if(ch=='#')
a[i][j]=1;
else a[i][j]=0;
}
}
for(i=0;i<=n-k;i++)
for(j=0;j<n;j++){
if(a[i][j]){
visit[j]=1;
sum=1;
if(k==1){
ans++;
}
else {
dfs(i);
}visit[j]=0;

sum--;
}
}
printf("%I64d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: