八皇后(深搜)

2021-08-24 20:56:33 字數 1196 閱讀 3111

八皇后

總時間限制: 1000ms 記憶體限制: 65536kb

描述

會下西洋棋的人都很清楚:皇后可以在橫、豎、斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上(有8 * 8個方格),使它們誰也不能被吃掉!這就是著名的八皇后問題。

對於某個滿足要求的8皇后的擺放方法,定義乙個皇后串a與之對應,即a=b1b2…b8,其中bi為相應擺法中第i行皇后所處的列數。已經知道8皇后問題一共有92組解(即92個不同的皇后串)。

給出乙個數b,要求輸出第b個串。串的比較是這樣的:皇后串x置於皇后串y之前,當且僅當將x視為整數時比y小。

輸入

第1行是測試資料的組數n,後面跟著n行輸入。每組測試資料佔1行,包括乙個正整數b(1 <= b <= 92)

輸出

輸出有n行,每行輸出對應乙個輸入。輸出應是乙個正整數,是對應於b的皇后串。

樣例輸入

2

192

樣例輸出

15863724

84136275

思路點拔:如圖,皇后控制的區域有同行,同列和兩條對角線,所以需要回溯這四種方向。

將乙個皇后的控制區域賦值為1,再遞迴放置下乙個皇后,當八個皇后放完時,就恢復原始狀態(回溯),搜尋下一種情況,這就是經典的八皇后問題

上**!!

#include

int a[105][10],ans,b[105],lie[105],zx[105],yx[105],s[105];

void dfs(int t) //深搜

return;

}for(int i=1;i<=8;i++)

}}int main()

printf("\n");

}return0;}

//非常經典的搜尋題,再多回味回味

八皇后 簡單深搜

檢查乙個如下的6 x 6的跳棋棋盤,有六個棋子被放置在棋盤上,使得每行 每列有且只有乙個,每條對角線 包括兩條主對角線的所有平行線 上至多有乙個棋子。上面的布局可以用序列2 4 6 1 3 5來描述,第i個數字表示在第i行的相應位置有乙個棋子,如下 行號 1 2 3 4 5 6 列號 2 4 6 1...

八皇后問題(dfs深搜)

題目 洛谷 p1219 乙個如下的 6 6 的跳棋棋盤,有六個棋子被放置在棋盤上,使得每行 每列有且只有乙個,每條對角線 包括兩條主對角線的所有平行線 上至多有乙個棋子。上面的布局可以用序列 2 4 6 1 3 5來描述,第 i個數字表示在第 i行的相應位置有乙個棋子,如下 行號 1 2 3 4 5...

題目 八 n皇后C 解 深搜

回溯法也稱試探法,用於尋找乙個問題的可行解。該方法首先暫時泛起問題規模大小的閒置,從最小規模開始將問題的候選解按某種順序逐一列舉和檢驗,選擇乙個可行的候選解,然後擴大規模,繼續試探。打到要求的規模時,所有的候選解就形成了問題的可行解。8皇后和n皇后的問題就是基於回溯法解決的。題目要求 在乙個8 8的...