Acwing 843 n 皇后問題 DFS剪枝

2021-10-22 01:20:26 字數 829 閱讀 1085

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

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

輸入格式

共一行,包含整數n。

輸出格式

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

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

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

注意:行末不能有多餘空格。

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

資料範圍

1≤n≤9

輸入樣例:

4輸出樣例:

.q……q

q……q.

…q.q…

…q.q…

#include

#include

using

namespace std;

const

int n =

100010

;int n, tra[n]

;bool flag[n]

, check1[n]

, check2[n]

;void

draw()

cout << endl;

} cout << endl;

}void

dfs(

int x)

for(

int i =

1; i <= n ; i ++)}

intmain()

Acwing 843 n 皇后問題

八皇后問題 113501904這道題看起來很難,當解決完八皇后問題的時候,其實再做這道題,就很容易ac了,因為只要注意對角線的標記,還有反對角線的標記以及各列的標記,相對於八皇后多了乙個輸出圖形,那我們需要新開乙個陣列儲存每一行用的列數,直到滿足條件的時候直接輸出。如下 include using ...

AcWing843 n 皇后問題 DFS

題目 acwing843 n 皇后問題 dfs模板題目。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...