回 帖 发 新 帖 刷新版面

主题:[讨论]关于八皇后算法的具体思维和过程

关于八皇后算法的具体思维和过程,我没有看懂啊
我们课后习题有这个题,我没有想出来,我看了一些N皇后但是那样好象很复杂啊
希望在次能与大家共同讨论有没有更简单的算法,大家踊跃发言啊

回复列表 (共3个回复)

沙发

我写了一个
请多执教



#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);
}


板凳

楼上,我有代码啊,就是不解其算法啊~~~~~~~~~~~
你可以和我讨论一下吗?

3 楼

代码写得很明白,太感谢了!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册