DFS訓練系列(1)八皇后問題

2021-08-22 04:37:04 字數 900 閱讀 8851

最為典型的八皇后問題ac**,一定要注意判定條件,放棋子之後的置位和出來後的恢復置位!

描述會下西洋棋的人都很清楚:皇后可以在橫、豎、斜線上不限步數地吃掉其他棋子。如何將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

#includeint mark[9][9];

int print[9];

int count;

int ans[99][9];

int abs(int a)

void dfs(int n)

return;

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

}} dfs(n+1);

for(int x=1;x<=8;x++)

}} }

}int main()

} dfs(1);

while(t--)

printf("\n");

} return 0;

}

八皇后問題 DFS

古老而且典型的回溯問題 八皇后問題 找了採用深度優先 進行實現 思路 一 首先 需要 乙個判斷該位置能不能放的問題 1 乙個同一行 肯定不能放 並且 mat i col 問題了 2 左斜向上的部分肯定不能放 因為這裡是從0 行開始的 先卡第一行 在看第二行 要是左斜向上 有皇后 那麼這個位置不能放 ...

八皇后問題(dfs)

八皇后問題,是乙個古老而著名的問題,是搜尋演算法的經典案例。該問題是國際西洋棋棋手馬克思貝瑟爾於1848年提出 在8 8格的西洋棋上擺放八個皇后。使其不能相互攻擊,即任意兩個皇后都不能處於同一行 同一列或者同一斜線,問有多少中擺法。分析 用dfs一行一行得進行擺放,用for迴圈來確定每一列,由於是一...

八皇后問題 dfs

一 題意解析 西洋棋中的皇后,可以橫向 縱向 斜向移動。如何在乙個8x8的棋盤上放置8個皇后,使得任意兩個皇后都不在同一條橫線 豎線 斜線方向上?八皇后問題是乙個古老的問題,於1848年由一位西洋棋棋手提出 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或...