在n*n的方格棋盤放置了n個皇后,使得它們不相互攻擊(即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。
你的任務是,對於給定的n,求出有多少種合法的放置方法。
input
共有若干行,每行乙個正整數n≤10,表示棋盤和皇后的數量;如果n=0,表示結束。
output
共有若干行,每行乙個正整數,表示對應輸入行的皇后的不同放置數量。
sample input
1850
sample output
19210
題意:在棋盤上放置皇后,使得各皇后之間不相互攻擊(即不在同一條線上,也不在同以斜線上)
思路:採用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行,每行輸出乙個長度...