#include "stdio.h"
#include "math.h"
#define M 8
int place(int i,int x[])
{
int j;
for(j=1;j<i;j++)
if(x[i]==x[j]||abs(i-j)==abs(x[i]-x[j]))
return 0;
return 1;
}
int main()
{
int k;
int j,i=1;
int x[M+1],sum=0;
for(j=1;j<=M;j++)
x[j]=0;
while(i>0)
{
x[i]++;
while(x[i]<=M&&!place(i,x))
x[i]++;
if(x[i]<=M)
{
if(i==M)
{
sum++;
printf("No %d:\n",sum);
for(j=1;j<=M;j++)
{
for(k=1;k<=M;k++)
{
if(k==x[j])
printf("%3c",'A');
else
printf("%3c",'.');
}
printf("\n");
}
}
else
{
i++;
x[i]=0;
}
}
else
i--;
}
return 0;
}
8皇后问题 非递归实现
最新推荐文章于 2021-05-23 17:27:51 发布