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...