題目:acwing843 n-皇后問題
dfs
模板題目。
n-皇后問題是指將 n 個皇后放在 n∗n 的西洋棋棋盤上,使得皇后不能相互攻擊到,即任意兩個皇后都不能處於同一行、同一列或同一斜線上。現在給定整數n,請你輸出所有的滿足條件的棋子擺法。
輸入格式
共一行,包含整數n。
輸出格式
每個解決方案佔n行,每行輸出乙個長度為n的字串,用來表示完整的棋盤狀態。
其中」.」表示某乙個位置的方格狀態為空,」q」表示某乙個位置的方格上擺著皇后。
每個方案輸出完成後,輸出乙個空行。
輸出方案的順序任意,只要不重複且沒有遺漏即可。
資料範圍
1≤n≤9
輸入樣例
4輸出樣例
.q……q
q……q.
…q.q…
…q.q…
dfs
模板題。
#include
using
namespace std;
const
int n =
100;
// g陣列記錄當前方案
char g[n]
[n];
// 列 對角線 反對角線 的狀態陣列,值為false代表沒有被佔
bool col[n]
,dg[n]
,udg[n]
;int n;
void
dfs(
int u)
for(
int i=
0;i}int
main()
}// u代表著已經確定了n行
dfs(0)
;return0;
}
dfs
模板題。注意判斷狀態的陣列方法、邊界條件的寫法、輸出方案的寫法、恢復現場的寫法。 Acwing 843 n 皇后問題
八皇后問題 113501904這道題看起來很難,當解決完八皇后問題的時候,其實再做這道題,就很容易ac了,因為只要注意對角線的標記,還有反對角線的標記以及各列的標記,相對於八皇后多了乙個輸出圖形,那我們需要新開乙個陣列儲存每一行用的列數,直到滿足條件的時候直接輸出。如下 include using ...
Acwing 843 n 皇后問題 DFS剪枝
n 皇后問題是指將 n 個皇后放在 n n 的西洋棋棋盤上,使得皇后不能相互攻擊到,即任意兩個皇后都不能處於同一行 同一列或同一斜線上。現在給定整數n,請你輸出所有的滿足條件的棋子擺法。輸入格式 共一行,包含整數n。輸出格式 每個解決方案佔n行,每行輸出乙個長度為n的字串,用來表示完整的棋盤狀態。其...
N皇后問題
include define maxqueens 20 define minqueens 4 enum bool typedef struct queendata queendata queendata queens maxqueens 1 int ncount init int init chec...