#include<stdio.h>
#include<string.h>
int c[15],sum,n;
int map[15][15];
void dfs(int );
int main()
{
while(scanf("%d",&n)&&n)
{
sum=0;
memset(c,0,sizeof(c));
dfs(0);
printf("%d\n",sum);
}
return 0;
}
void dfs(int num)
{
if(num==n)
{
sum++;
return ;
}
int i,j,hang_c,lie_c;
for(i=0;i<n;i++)
{
for(j=0;j<num;j++)
{
hang_c=num-j;
if(hang_c<0) hang_c=0-hang_c;
lie_c=c[j]-i;
if(lie_c<0) lie_c=0-lie_c;
if(lie_c==hang_c||i==c[j])
{
break;
}
}
if(j==num)
{
c[num]=i;
dfs(num+1);
}
}
}
原始版N皇后问题,最慢的算法
最新推荐文章于 2024-04-18 08:15:00 发布