n皇后問題
time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u
submit
status
description
在n*n的方格棋盤放置了n個皇后,使得它們不相互攻擊(即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。
你的任務是,對於給定的n,求出有多少種合法的放置方法。
input
共有若干行,每行乙個正整數n≤10,表示棋盤和皇后的數量;如果n=0,表示結束。
output
共有若干行,每行乙個正整數,表示對應輸入行的皇后的不同放置數量。
sample input
1850
sample output
19210
#include
#include
#include
using namespace std;
int dp[12];
bool vis[3][50];
int sum=0;
void dfs(int row,int n)
}
}
}
int main()
while(scanf("%d",&n),n)
printf("%d\n",dp[n]);
return 0;
}
思路:用一維陣列hang[num] = i,num表示第num行,i表示第i列,計算n = 1~10皇后的不同放置數量,然後打表?
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include
#include
int
hang[11],n,sum;
int
ans[11];
bool
judge(
int
num)
void
dfs(
int
num)
}
}
int
main()
while
(
scanf
(
"%d"
,&m) && m)
printf
(
"%d\n"
,ans[m]);
return
0;
}
杭電 2553 N皇后問題 (dfs)
在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如果n 0,表示結束。共有若干行,每行乙個正整數,表示...
HDU2553 N皇后問題(DFS)
problem description 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如...
HDU2553 N皇后問題(dfs)
description 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如果n 0,表示結...