【八皇后问题】我自己写的,感觉能通,检查没有语句错误,但运行...
发布网友
发布时间:2024-03-01 09:33
我来回答
共2个回答
热心网友
时间:2024-06-13 08:13
把你的代码压缩,上传,我看看
c中没bool型,可将bool型改为int型,结果判断是否为1即可,即check(data,length)==1
原理全排列
给赞哦!!!
热心网友
时间:2024-06-13 08:07
你可以使用调试看看自己代码运行的过程,八皇后是关于深度优先的递归算法(DFS)。
#include <stdio.h>
#include <math.h>
#define QUEEN 8
int count=0;
int queen[QUEEN]; // 存放每一列的列数
void Output(int queen[])
{ int i;
for(i=0;i<QUEEN;i++) {
printf("%d,%d\n",i,queen[i]);
}
printf("\n"); count++;
}
int isValid(int n)
{ int i;
for(i=0;i<n;i++) {
if(queen[n]==queen[i])
return 0;
if((n-i)==abs(queen[n]-queen[i]))
return 0;
}
return 1;
}
void Queen(int n)
{ int i;
if(n==QUEEN) {
Output(queen);
}
else {
for(i=0;i<QUEEN;i++) {
queen[n]=i;
if(isValid(n))
{
Queen(n+1);
}
}
}
}
void main()
{
Queen(0);
printf("%d",count);
}
这是比较简单的代码,你可以参考下。