n皇后問題 回溯法,以DFS的方式搜尋

2021-08-20 11:09:34 字數 511 閱讀 5532

所謂一山不能容二虎,在 n×n 的棋盤上放置彼此不受攻擊的 n 個皇后。按照西洋棋的規則,皇后可以攻擊與

之在同一行、同一列、同一斜線上的棋子。設計演算法在 n×n 的棋盤上放置 n 個皇后,使其彼此不受攻擊。

輸入:輸出:

2 4 1 3

3 1 4 2

可行方案數:2

問題分析:

**:

#include#includeusing namespace std;

#define m 105

int n;//皇后

int x[m];//第m個皇后放在m行x[m]列

int num;//可行方案的個數

bool place(int t)

} return ok;

}void backtrack(int t)

else

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

int main()

回溯法 n皇后問題 DFS

在n n的棋盤上放置彼此不受攻擊的n個皇后。按照西洋棋的規則,皇后可以攻擊與之在同一行,同一列,同一斜線上的棋子。現在在n n的棋盤上放置n個皇后,使彼此不受攻擊。在放置皇后的過程中,我們要考慮三個方面,不能同行,不能同列,不能同對角線。那麼就可以從行出發,即每個皇后放在一行中,這樣只需考慮與已放置...

N 皇后問題 回溯法

n 皇后問題 在 n n 的棋盤上放置彼此不受攻擊的 n 個皇后,任意兩個皇后不同行 不同列 不同斜線。思路 1.因為皇后不能同行,所以,在每一行放置乙個皇后就行 2.當在一行放置皇后的時候 1 順序檢查這一行每乙個位置是否和上面所有的皇后,只要有乙個同列或者在斜線上就不能放置 若找到乙個滿足的,放...

回溯法 n皇后問題

問題描述 在nxn的棋盤上,放置彼此不受攻擊的n個皇后。規則 皇后可以攻擊與之在同一行,同一列,同一斜線上的棋子。以行為主導 不用再判斷是否同行了 演算法設計 1 定義問題的解空間 問題解的形式為n元組 分量xi表示第i個皇后放置在第i行,第xi列。2 解空間的組織結構 m叉樹 3 搜尋解空間 約束...