《演算法筆記》n皇后問題

2022-06-30 00:57:12 字數 585 閱讀 2221

問題:n*n的棋盤上放置n個皇后,使得n個皇后不能互相攻擊(不能在同一行、同一列、同一對角線上)

思路(暴力):列舉1-n的全排列,判斷每個全排列是否合法

#include#include

#include

using

namespace

std;

int n,count1=0

;int p[110

];bool hashtable[110]=;

void generatep(int

index)

}if(flag) count1++;

return

; }

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

}}int

main()

優化(回溯法):當放置一部分皇后時,已經不符合,就可以不用往下遞迴

void generatep(int

index)

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

}if(flag)//

如果沒有衝突,就把x放入}}

}

回溯 皇后 演算法筆記 回溯演算法 N皇后問題

n 皇后問題研究的是如何將 n 個皇后放置在 n n 的棋盤上,並且使皇后彼此之間不能相互攻擊。上圖為 8 皇后問題的一種解法。給定乙個整數 n,返回所有不同的 n 皇后問題的解決方案。每一種解法包含乙個明確的 n 皇后問題的棋子放置方案,該方案中 q 和 分別代表了皇后和空位。示例 輸入 4 輸出...

演算法 n皇后問題

題目描述 乙個 n n 的棋盤,要在上面放 n 個皇后。規則 兩個皇后之間如果是同列 同行 同對角線它們會互相攻擊。也就 是 說 棋盤上的任意兩個皇后不能為同列 同行 同對角線。演算法思想 q j 表示乙個解的空間即儲存一組可行解的陣列,j表示行數,q j 的值表示j行可以放置皇后的所在列數,根據任...

(演算法)N皇后問題

八皇后問題 在8 x 8的西洋棋上擺放八個皇后,使其不能相互攻擊,即任意兩個皇后不得處於同一行,同一列或者同意對角線上,求出所有符合條件的擺法。1 回溯法 資料結構 由於8個皇后不能處在同一行,那麼肯定每個皇后佔據一行,這樣可以定義乙個陣列a 8 陣列中第i個數字,即a i 表示位於第i行的皇后的列...