AcWing843 n 皇后問題 DFS

2021-10-19 10:25:34 字數 1025 閱讀 8088

題目: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...