10 06 DFS學習 經典例題之八皇后

2021-08-09 00:22:20 字數 883 閱讀 5345

---------------題目---------------(noi2.5基本演算法之搜尋)1756:八皇后總時間限制: 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的皇后串。樣例輸入2192樣例輸出1586372484136275---------------分析---------------本題為經典dfs題目,基本思路如下:由題可知,八皇后的布局可以用乙個八位整數(每一位均為一到八)儲存;運用dfs基本思路,先逐個判斷一到八是否與其他行、列、對角線上的皇后衝突,若不衝突則接著判斷下乙個,當判斷完一組(八個)時便以八位整數的形式存到陣列中。---------------**實現---------------

#include

#include

int total,b;

int s[9],a[92];

void search(int top)}}

else

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

}if(p)

}}int main()

search(1);

return 0;

}

DFS 剪枝(經典例題)

描述 喬治拿來一組等長的木棒,將它們隨機地裁斷,使得每一節木棍的長度都不超過50個長度單位。然後他又想把這些木棍恢復到為裁截前的狀態,但忘記了初始時有多少木棒以及木棒的初始長度。請你設計乙個程式,幫助喬治計算木棒的可能最小長度。每一節木棍的長度都用大於零的整數表示。輸入 輸入包含多組資料,每組資料報...

DFS深度優先遍歷經典例題總結

void dfs int x 關於傳入引數問題,根據題意而定,看在題目執行的過程中,哪些是在變得 if 目前已經沒有必要進行下去的條件 剪枝操作 如果傳入的條件,還需要繼續搜下去,分析每一種情況後面跟哪些情況,然後迴圈,每個情況 注意前提 得符合題意 都深搜一下 for int i 1 i 每種情況...

C語言函式之經典例題

printf函式返回值型別 返回值是輸出的字元數量,包括數字,字母,標點符號,空格等 如 define crt secure no warnings 1 include intmain 結果輸出4321寫一函式判斷乙個數是否是素數 define crt secure no warnings 1 in...