n皇后(回溯)

2021-10-03 13:44:01 字數 911 閱讀 3812

題目描述

在n*n的方格棋盤放置了n個皇后,使得它們不相互攻擊(即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。

你的任務是,對於給定的n,求出有多少種合法的放置方法。

輸入測試資料由多組測試樣例組成。每組測試資料第一行輸入乙個正整數 n ( 1 <= n <= 10 )

輸出輸出有多少種合法的放置方法

樣例輸入 copy15

樣例輸出 copy110

;//這裡可以再砍掉兩條,不影響結果

void

init()

}int

judge

(int x,

int y)

int tx,ty;

for(

int i=

0;i<

4;i++)}

return1;

}void

dfs(

int x)

for(

int i=

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

}int

main()

cout<< ans <

}return0;

}

回溯 n皇后問題

思想 用回溯方法求解,首先要分析問題的求解空間。可用一棵n叉樹表示這個問題的求解空間,在回溯遍歷這個課二叉樹的過程中形成合理的解。對於這棵n叉樹,列序號i 0 n 1 是它的孩子,而每個孩子都有深度為n的子樹 包括自身 這些子樹的層次是n個皇后 也代表每個皇后的行序號,因為不同的皇后肯定不在同一行 ...

n皇后問題(回溯)

problem description 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如...

n皇后 回溯遞迴

遞迴回溯方法解決 n皇后問題 include include include using namespace std void queen int row int c 遞迴回溯本體 int is true int row int c 判斷是否當前旗子擺放符合條件 int n total 0 int ...