每日一題 n 皇后問題 (演算法實現皇后放置模擬)

2021-10-18 19:38:02 字數 1397 閱讀 6433

n-皇后問題

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

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

輸入格式

共一行,包含整數n

輸出格式

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

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

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

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

資料範圍

1≤n≤9

輸入樣例:

4
輸出樣例:

.q..

...q

q...

..q.

..q.

q...

...q

.q..

**:c++:

#include

#include

#include

using

namespace std;

const

int n =15;

int n,ans,q[n]

;// ans記錄可行的方案數,q[i]記錄可行的方案中第i行皇后在哪一列。

bool col[n]

, dg[

2*n]

, udg[

2*n]

;//col為記錄某一列有無皇后。dg和udg分別記錄主對角線和次對角線有沒有皇后

bool

dfs(

int x)

//深度優先遍歷,遍歷第x行,找到第x行應該放在哪一列。}if

(x > n)

//x>n表示已經遍歷完前x行,及找到可行方案(每行乙個皇后,必有解)。

cout << endl;

} cout << endl;}}

intmain()

每日刷題 N皇后

n 皇后問題研究的是如何將 n 個皇后放置在 n n 的棋盤上,並且使皇后彼此之間不能相互攻擊。皇后的攻擊範圍為 自己所在的一行 自己所在的一列 以及自己所在的兩個對角線上。上圖為 8 皇后問題的一種解法。給定乙個整數 n,返回所有不同的 n 皇后問題的解決方案。每一種解法包含乙個明確的 n 皇后問...

Leetcode 每日一題 52 N皇后 II

n 皇后問題研究的是如何將 n 個皇后放置在 n n 的棋盤上,並且使皇后彼此之間不能相互攻擊。上圖為 8 皇后問題的一種解法。給定乙個整數 n,返回 n 皇后不同的解決方案的數量。示例 輸入 4 輸出 2 解釋 4 皇后問題存在如下兩個不同的解法。q 解法 1 q q q.q.解法 2 q q q...

演算法題 N皇后 JS實現

n 皇后問題 研究的是如何將 n 個皇后放置在 n n 的棋盤上,並且使皇后彼此之間不能相互攻擊。給你乙個整數 n 返回所有不同的 n 皇后問題 的解決方案。每一種解法包含乙個不同的 n 皇后問題 的棋子放置方案,該方案中 q 和 分別代表了皇后和空位。遞迴 param n return var s...