HDU 2553 N皇后问题
2014-03-18 11:23
381 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2553
题解:
经典的八皇后的问题,参考之前写的八皇后就可以解决了。http://blog.csdn.net/mullerwch/article/details/20623937
然而,这里的注意点是:将N皇后的所有可能性都先求解出来,然后进行题目中的输入输出的解答,否则每次输入都进行一次DFS,结果必然是TLE。
这里给出AC的代码,仅供参考:
/*
ID: 2553
Name: N皇后问题
LANG:C++
PREFERENCE: dfs
*/
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cstring>
using namespace std;
int queen[15]; //表示第i行皇后的位置
int ans[15]; //N皇后的答案数目
void dfs(int now, int final){
if(now == final){
ans[final]++;
return;
}
int i,j;
for(i=0; i<final; ++i){
queen[now] = i;
bool flag = true;
for(j=0; j<now; ++j)
if(queen[now] == queen[j]||
queen[now]-now == queen[j]-j||
queen[now]+now == queen[j]+j){ //判断是否会相互攻击
flag = false;
break;
}
if(flag)
dfs(now+1, final);
}
return ;
}
int main(){
int i;
int n;
memset(ans, 0, sizeof(ans));
for(i=1; i<=10; ++i){
memset(queen, 0, sizeof(queen));
dfs(0, i);
}
while(scanf("%d", &n), n){
printf("%d\n", ans
);
}
return 0;
}
题解:
经典的八皇后的问题,参考之前写的八皇后就可以解决了。http://blog.csdn.net/mullerwch/article/details/20623937
然而,这里的注意点是:将N皇后的所有可能性都先求解出来,然后进行题目中的输入输出的解答,否则每次输入都进行一次DFS,结果必然是TLE。
这里给出AC的代码,仅供参考:
/*
ID: 2553
Name: N皇后问题
LANG:C++
PREFERENCE: dfs
*/
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cstring>
using namespace std;
int queen[15]; //表示第i行皇后的位置
int ans[15]; //N皇后的答案数目
void dfs(int now, int final){
if(now == final){
ans[final]++;
return;
}
int i,j;
for(i=0; i<final; ++i){
queen[now] = i;
bool flag = true;
for(j=0; j<now; ++j)
if(queen[now] == queen[j]||
queen[now]-now == queen[j]-j||
queen[now]+now == queen[j]+j){ //判断是否会相互攻击
flag = false;
break;
}
if(flag)
dfs(now+1, final);
}
return ;
}
int main(){
int i;
int n;
memset(ans, 0, sizeof(ans));
for(i=1; i<=10; ++i){
memset(queen, 0, sizeof(queen));
dfs(0, i);
}
while(scanf("%d", &n), n){
printf("%d\n", ans
);
}
return 0;
}
相关文章推荐
- HDU 2553 N皇后问题(详细题解)
- HDU 2553 N皇后问题
- (step4.3.2)hdu 2553(N皇后问题)
- hdu 2553 N皇后问题
- 【题解】 状态压缩 CSYZOJ 1040 || codevs 1295 || hdu 2553 N皇后问题
- hdu 2553 N皇后问题(dfs)
- ACM 搜索 HDU 2553 N皇后问题
- HDU 2553 n皇后问题(回溯法)
- HDU 2553 N皇后问题 深搜
- HDU_2553_N皇后问题
- HDU 2553 - N皇后问题 [回溯法]
- 2553--Hdu--N皇后问题
- 【HDU】2553 - N皇后问题(dfs)
- N皇后问题(HDU-2553)
- hdu 2553 N皇后问题(dfs)
- HDU 2553 N皇后问题(2种详细题解)
- HDU 2553 n皇后问题(回溯)
- day3 HDU 2553 N皇后问题
- Hdu 2553 N皇后问题
- [HDU] 2553 N皇后问题-简单深搜