DFS--N皇后问题
来源:互联网 发布:怎么让淘宝号快速升3心 编辑:程序博客网 时间:2024/05/13 01:43
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
- Input
- 共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
- Output
- 共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
- Sample Input
1850
- Sample Output
19210
超时。。打表解决。。
#include
#include
using namespace std;
int pic[15][15];
int cnt;
bool judge(int i, int j, int N){
int flag = 1;
for (int k = 1; k
{
if (pic[k][j])
{
flag = 0;
break;
}
}
for (int k = 1; i - k>0 && j - k>0; k++){
if (pic[i - k][j - k])
{
flag = 0;
}
}
for (int k = 1; i - k>0 && j + k <= N; k++){
if (pic[i - k][j + k])
{
flag = 0;
}
}
if (flag){
return true;
}
else return false;
}
void Trial(int i, int N){
if (i > N){
cnt++;
return;
}
else
for (int j = 1; j <= N; j++){
pic[i][j] = 1;
if (judge(i, j, N))
Trial(i + 1, N);
pic[i][j] = 0;
}
}
int main(){
int N;
while (cin >> N){
if (N == 0)
break;
cnt = 0;
memset(pic, 0, sizeof(pic));
Trial(1, N);
cout << cnt << endl;
}
return 0;
}
0 0
- N皇后问题【DFS】
- n皇后问题(dfs)
- n皇后问题<dfs>
- <DFS> N皇后问题
- N皇后问题<DFS>
- dfs n皇后问题
- 【DFS】N皇后问题
- DFS--N皇后问题
- N皇后问题(DFS)
- N皇后问题(DFS)
- HDU2553:N皇后问题(DFS)
- dfs HDU2553 N皇后问题
- 【搜索-DFS】N皇后问题
- DFS hdu2553 N皇后问题
- hdu2553 N皇后问题--DFS
- n皇后问题(简单dfs)
- DFS解决n皇后问题
- hdu2553-N皇后问题 DFS
- linux使用crontab实现PHP执行定时任务
- Git 使用遇到的各种问题
- bootstarp modal框居中
- 二分法--Pie
- 二分法--Can you find it?
- DFS--N皇后问题
- DFS--Prime Ring Problem
- DFS--Red and Black
- 二分&&贪心--Block Towers
- 记忆化搜索(DFS+动态规划)--滑雪
- Parencodings
- 贪心--FatMouse' Trade(结构…
- The Third Cup is Free
- 贪心--Doing Homework again