菜雞的dfs學習 n 皇后問題

2022-09-07 20:12:21 字數 987 閱讀 3547

n-皇后問題是指將 n 個皇后放在 n∗n 的西洋棋棋盤上,使得皇后不能相互攻擊到,即任意兩個皇后都不能處於同一行、同一列或同一斜線上。

現在給定整數n,請你輸出所有的滿足條件的棋子擺法。

共一行,包含整數n(n ≤ 10)。

每個解決方案佔n行,每行輸出乙個長度為n的字元    串,用來表示完整的棋盤狀態。

其中」.」表示某乙個位置的方格狀態為空,」q」表示某乙個位置的方格上擺著皇后。

每個方案輸出完成後,輸出乙個空行。

輸出方案的順序任意,只要不重複且沒有遺漏即可。

根據題意,我們可以知道每一行和每一列有且只能有乙個皇后,所以我們可以用dfs列舉每一行或每一列,假定我們從0開始枚舉行,那麼我們可以設定三個bool陣列 col、d、ud 分別表示當前位置所在列、對角線和反對角線上是否有皇后。

接下來讓我們來看一下如何快速的判斷兩條對角線上是否有皇后,我們以棋盤的左、上邊界建立直角座標系,如圖,我們可以用截距(b > 0)來唯一表示一條對角線

//從每一行第乙個開始搜

for(

int i =

0; i < n; i ++)}

}int

main()

題目鏈

菜雞的dfs學習 n 皇后問題

n 皇后問題是指將 n 個皇后放在 n n 的西洋棋棋盤上,使得皇后不能相互攻擊到,即任意兩個皇后都不能處於同一行 同一列或同一斜線上。現在給定整數n,請你輸出所有的滿足條件的棋子擺法。共一行,包含整數n n 10 每個解決方案佔n行,每行輸出乙個長度為n的字元 串,用來表示完整的棋盤狀態。其中 表...

菜雞解N皇后問題

菜雞能有什麼好想法?暴力就完了。在一張n n的西洋棋棋盤上,放置n個皇后,使得所有皇后都無法互相直接攻擊得到,皇后可以直接攻擊到她 所在的橫行,豎列,斜方向上的棋子 現在輸入乙個整數n,表示在n n的棋盤上放n個皇后,請輸出共有多少種使 得所有皇后都無法互相直接攻擊得到的方案數。例如下面這樣的擺法,...

N皇后問題 DFS

在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如果n 0,表示結束。output 共有若...