您的位置:首页 > 其它

hdu 2553 n皇后问题

2015-10-10 13:23 375 查看
//和八皇后一样,没有什么差别,详细解析见八皇后

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int n,hang[20],cnt;
int ans[11];
void queen(int i)
{
int j,k;
if(i==n)
{
cnt++;
return ;
}
for(j=0;j<n;j++)
{
for (k=0;k<i;k++)
if(hang[k]==j||abs(k-i)==abs(hang[k]-j)) break;
if(k==i)
{
hang[k]=j;
queen(i+1);
hang[k]=0;
}
}
}
int main()
{
int m;
for(n=1;n<=10;n++) //先打表,否则会超时
{
fill(hang,hang+20,0);
cnt=0;
queen(0);
ans
=cnt;
}
while(~scanf("%d",&m),m)
{
printf("%d\n",ans[m]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: