8皇后問題

2021-08-10 02:13:21 字數 1282 閱讀 1701



8

皇后問題

描述:

八皇后問題是大數學家高斯於2023年提出來的。該問題是在8×8的西洋棋棋盤上放置8個皇后,使得沒有乙個皇后能「吃掉」任何其他乙個皇后,即沒有任何兩個皇后被放置在棋盤的同一行、同一列或同一斜線上。

輸出8皇后問題所有結果。

輸入:沒有輸入。

輸出:每個結果第一行是no n:的形式,n表示輸出的是第幾個結果;下面8行,每行8個字元,『a』表示皇后,『.』表示空格。不同的結果中,先輸出第乙個皇后位置靠前的結果;第乙個皇后位置相同,先輸出第二個皇后位置靠前的結果;依次類推。

輸入樣例:

輸出樣例:

輸出的前幾行:

no 1:

a.......

....a...

.......a

.....a..

..a.....

......a.

.a......

...a....

no 2:

a.......

.....a..

.......a

..a.....

......a.

...a....

.a......

....a...

答案:#include

#include//

要用到絕對值函式

inta[8];

intcounter=1;//

計數器

voidsearch(int m); //

遞迴函式

intcanplace(int row,int col);//

判斷是否滿足八皇后的條件

voidoutput();

intmain()

voidsearch(int m)

else}

} }intcanplace(int row,int col) }

return(flag);}

voidoutput ()

printf("\n");}

}注意:

本題用a[m]=j來表示皇后在第m行第j列,所以輸出時一行只有乙個皇后,故在canplace中無需再判斷

輸出時要二重迴圈才能輸出矩陣

a[i]==col

表示同一列的前n-1行中有皇后

fabs(row-i)==fabs(col-a[i])

表示在同一斜線上或在同一反斜線上

8皇后問題

會下西洋棋的人都很清楚 皇后可以在橫 豎 斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上 有8 8個方格 使它們誰也不能被吃掉!這就是著名的八皇后問題。對於某個滿足要求的8皇后的擺放方法,定義乙個皇后串a與之對應,即a b1b2.b8,其中bi為相應擺法中第i行皇后所處的列數。已經知道8皇后...

8皇后問題

8皇后問題 在乙個8 8的棋盤上如何安置8個皇后 不允許任何兩個皇后在同一列,同一行,同一斜線 斜率為正負一 思路 用一維陣列的下標和值表示 皇后的座標 0,0 7,7 例如a 1 0,表示 1,0 暴力8的8次方種情況,用二進位制表示,即00000000 77777777 十進位制表示0 pow ...

8皇后問題

在n n的棋盤上放置彼此不受攻擊的n個皇后,按照西洋棋的規則,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。n後問題等價於在n n格的棋盤上放置n個皇后,任何2個皇后不放在同一行或同一列或同一斜線上。將每一種方法都輸出 這個問題我在網上看到了大神的方法,下面是 僅限於n 13的情況 n 8時...