C語言 8皇后問題

2021-09-07 10:21:39 字數 631 閱讀 8118

題目:8皇后問題

在8×8的棋盤上,放置8個皇后(棋子),使兩兩之間互不攻擊。所謂互不攻擊是說任何兩個皇后都要滿足:

(1)不在棋盤的同一行;

(2)不在棋盤的同一列;

(3)不在棋盤的同一對角線上。

因此可以推論出,棋盤共有8行,故至多有8個皇后,即每一行有且僅有乙個皇后。這8個皇后中的每乙個應該擺放在哪一列上是解該題的任務。

注釋:遞迴題。

遞迴引數:當前行:begin;

遞迴出口:至多有8個皇后;

每輪操作都要判斷選中位置的行、列、斜三個位置上是否有其他皇后,有則不能放,否則遞迴下一行——注意標記陣列在每一次遞迴後要恢復。

**如下:

1 #include2

int sum=0;//

表共有多少種放法即結果

3int lie[8];//

代表一豎n行

4int xie1[2*8];//

代表從↖到↘對角線

5int xie2[2*8];//

代表從↘到↖對角線67

void huanghou(int

begin)else21}

22} 23}

24int

main()

C語言 8皇后問題

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述 輸出8皇后問題所有結果。輸入 沒有輸入。輸出 每個結果第一行是no n 的形式,n表示輸出的是第幾個結果 下面8行,每行8個字元,a 表示皇后,表示空格。不同的結果中,先輸出第乙個皇后位置靠前的結果 第乙個皇后位置相同,先輸出...

8皇后問題

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

8皇后問題

8 皇后問題 描述 八皇后問題是大數學家高斯於1850年提出來的。該問題是在8 8的西洋棋棋盤上放置8個皇后,使得沒有乙個皇后能 吃掉 任何其他乙個皇后,即沒有任何兩個皇后被放置在棋盤的同一行 同一列或同一斜線上。輸出8皇后問題所有結果。輸入 沒有輸入。輸出 每個結果第一行是no n 的形式,n表示...