思路都一样,只是语法不同而已。
呵呵,思路是什么?

解决方案 »

  1.   

    严尉敏的数据结构那本书?---一般的学校都用那个作教材的那本那本书的树那一章(比较后面,多叉树),有8皇后的递归算法。
    我按照那个算法用c实现过了,正确,答案是91把---好像是,可能机错了。
    :)))
      

  2.   

    我编的c代码, 改改就java了.答案是91:)
    #define N 8 //预编译定义N为皇后数;
    #include <stdio.h>
    int Count = 0;
    int Queen[N + 1] = {0}, Column[N + 1] = {0};
    int Down[2 * N] = {0}, Up[2 * N] = {0}; //Queen[i]为第i个皇后所在的列,初始位零;Column[j]为第j列是否安全{0,1};    //Down[i - j + N], Up[i + j - 1]表示斜线是否安全; void TryQueen (int i);void main()
    {
    TryQueen(1);
    }void TryQueen (int i)
    {
    int j,k; for (j = 1; j <= N; j++)
    {
    if ((Column[j] == 0) && (Down[i - j + N] == 0) && (Up[i + j - 1] == 0)) 
    {
    Queen[i] = j;
    Column[j] = 1;
    Down[i - j + N] = 1;
    Up[i + j - 1] = 1;
    if (i == N)
    {
    printf ("第%d种排法为: \n", ++Count);
    for (k = 1; k <= N; k++)
    printf ("第%d个皇后放在第%d行第%d列\n",k ,k ,Queen[k]);
    printf ("\n");
                       
    }

    else 
    TryQueen(i+1);

    Queen[i] = 0;
    Column[j] = 0;
    Down[i - j + N] = 0;
    Up[i + j - 1] = 0; //回溯遍历;
    }
    }
    }
      

  3.   

    不用那么复杂吧?建一个8个元素的一维数组,用下标做行号,值做列号,回溯就行了.
    原则是:能放就放,不能就换,换不了就退.
      

  4.   

    回溯法解八皇后和递归法有什么不同啊?