DFS N皇后問題

2021-08-15 03:23:05 字數 704 閱讀 4403

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

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

input

共有若干行,每行乙個正整數n≤10,表示棋盤和皇后的數量;如果n=0,表示結束。

output

共有若干行,每行乙個正整數,表示對應輸入行的皇后的不同放置數量。

sample input

185

0

sample output

1

9210

題意:在棋盤上放置皇后,使得各皇后之間不相互攻擊(即不在同一條線上,也不在同以斜線上)

思路:採用dfs深搜,由上至下,則保證了各皇后不會在一行中, 同時加條件滿足不在同列和斜線上即可。

#include

#include

#include

using namespace std;

int a[15],b[15];

int n,sum;

void dfs(int h)//h為深度

int x,y,i;

x=h;

for(y=1;y<=n;y++)//搜尋該行每個位置{

for(i=1;i

HDU 2553 DFS N皇后問題

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

dfs N皇后問題 HDU 2553

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

c語言 dfs n皇后問題 深度優先搜素

c語言dfs基礎入門題目 n皇后問題 n 皇后問題是指將 n 個皇后放在 n n 的西洋棋棋盤上,使得皇后不能相互攻擊到,即任意兩個皇后都不能處於同一行 同一列或同一斜線上。現在給定整數n,請你輸出所有的滿足條件的棋子擺法。輸入格式 共一行,包含整數n。輸出格式 每個解決方案佔n行,每行輸出乙個長度...