LeetCode演算法 N皇后 N皇后II

2021-10-09 10:26:01 字數 2353 閱讀 5499

n皇后問題研究的是如何將 n?個皇后放置在 n×n 的棋盤上,並且使皇后彼此之間不能相互攻擊。

給定乙個整數 n,返回所有不同的?n?皇后問題的解決方案。

每一種解法包含乙個明確的?n 皇后問題的棋子放置方案,該方案中 『q』 和 『.』 分別代表了皇后和空位。

示例:輸入: 4

輸出: [

[".q…", // 解法 1

「…q」,

「q…」,

「…q.」],

["…q.", // 解法 2

「q…」,

「…q」,

「.q…」]

]解釋: 4 皇后問題存在兩個不同的解法。

#include

#include

using

namespace std;

class

solution

if(n ==

2|| n ==3)

vector

map(n)

;// 皇后存放的地圖

vector<

int>

column

(n,0);

// 用於列的標記

vector<

int>

lineup(2

* n,0)

;// 用於斜線的判斷

vector<

int>

linedown(2

* n,0)

;// 初始化兩個陣列中的資料

for(

int i =

0; i <= n -1;

++i)

}curqueenlocal_dfs

(map, column, lineup, linedown, n,0)

;// 從第1個皇后開始搜尋

return result;

}private

:// 深度優先搜尋 求解

void

curqueenlocal_dfs

(vector

& map, vector<

int>

& column,

vector<

int>

& lineup, vector<

int>

& linedown,

int k,

int n)

// 當前第 n 個皇后所有的可能性

for(

int i =

0; i <= k -1;

++i)}}

;int

main()

cout << endl << endl;

}delete obj;

return0;

}

#include

#include

using

namespace std;

class

solution

if(n ==

2|| n ==3)

vector

map(n)

;// 皇后存放的地圖

vector<

int>

column

(n,0);

// 用於列的標記

vector<

int>

lineup(2

* n,0)

;// 用於斜線的判斷

vector<

int>

linedown(2

* n,0)

;// 初始化兩個陣列中的資料

for(

int i =

0; i <= n -1;

++i)

}curqueenlocal_dfs

(map, column, lineup, linedown, n,0)

;// 從第1個皇后開始搜尋

return retnum;

}private

:// 深度優先搜尋 求解

void

curqueenlocal_dfs

(vector

& map, vector<

int>

& column,

vector<

int>

& lineup, vector<

int>

& linedown,

int k,

int n)

// 當前第 n 個皇后所有的可能性

for(

int i =

0; i <= k -1;

++i)}}

;int

main()

LeetCode 回溯 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行的皇后的列...