主题:[讨论]关于八皇后算法的具体思维和过程
chuangjun
[专家分:220] 发布于 2007-05-24 12:47:00
关于八皇后算法的具体思维和过程,我没有看懂啊
我们课后习题有这个题,我没有想出来,我看了一些N皇后但是那样好象很复杂啊
希望在次能与大家共同讨论有没有更简单的算法,大家踊跃发言啊
回复列表 (共3个回复)
沙发
xingkong052465 [专家分:30] 发布于 2007-05-28 00:50:00
我写了一个
请多执教
#include<stdio.h>
#include<math.h>
#define N 8
int x[N]={0},sum=0;//x[i]表示第i个皇后在i行x[i]列
void output()
{
int i;
printf("No*%d*\n",sum);
for(i=0;i<N;i++)
printf("%4d",x[i]);
putchar('\n');
}
int place(int k)
{
int i=0;
for(i=0;i<k;i++)
if(abs(i-k)==abs(x[i]-x[k])||x[i]==x[k])
return 0;
return 1;
}
void Search(int n)
{
int i;
if(n>=N)
{
sum++;
output();
}
else
for(i=0;i<N;i++)
{
x[n]=i;
if(place(n))
Search(n+1);
}
}
void main()
{
Search(0);
}
板凳
chuangjun [专家分:220] 发布于 2007-05-28 15:17:00
楼上,我有代码啊,就是不解其算法啊~~~~~~~~~~~
你可以和我讨论一下吗?
3 楼
theoneclan [专家分:50] 发布于 2007-06-23 16:54:00
代码写得很明白,太感谢了!!!
我来回复