#include <stdio.h>
#include <math.h>
int a[10];
int x[20],N,count=0;
int place(int t)
{
int i;
for(i=1;i<t;i++)
if(abs(t-i)==abs(x[i]-x[t])||x[i]==x[t])
return 0;
return 1;
}
void back(int t)
{
int i;
if(t==N+1)
{
for(i=1;i<=N;i++)
printf("%d ",x[i]);
printf("\n");
count++;
}
else
{
for(i=1;i<=N;i++)
{
x[t]=i;
if(place(t))
back(t+1);
}
}
}
void main()
{
printf("这是几皇后问题:");
scanf("%d",&N);
back(1);
printf("求得%d皇后问题共有:%d组解\n",N,count);
}
N皇后问题(回溯法)
最新推荐文章于 2022-08-01 10:17:16 发布