N皇后问题<经典DFS>
来源:互联网 发布:检察院 大数据 公司 编辑:程序博客网 时间:2024/05/21 14:57
N皇后问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 21526 Accepted Submission(s): 9635
Problem Description
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
Input
共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
Output
共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
Sample Input
Sample Output
Author
cgf
Source
2008 HZNU Programming Contest
经典的DFS,但是在这里注意打表就行,不然会超时
#include <iostream>#include <cstring>#include <stack>#include <cstdio>#include <cmath>#include <queue>#include <algorithm>#include <vector>#include <set>#include <map>const double eps=1e-8;const double PI=acos(-1.0);using namespace std;int n;int l[50],r[50],a[50],ans[20];//主对角线,副对角线,当前列,结果打表;void f(int i){ if(i==n) ans[n]++; else { for(int j=0;j<n;j++) { if(!l[j-i+n]&&!r[i+j]&&!a[j]) { l[j-i+n]=r[i+j]=a[j]=1; f(i+1); l[j-i+n]=r[i+j]=a[j]=0; } } }}int main(){ for(int i=1;i<=10;i++){ n=i; f(0); } while(~scanf("%d",&n)&&n){ printf("%d\n",ans[n]); } return 0;}
阅读全文
1 0
- N皇后问题<经典DFS>
- hdu 2553 N皇后问题 (经典DFS)
- 经典DFS之N皇后问题
- N皇后问题(经典DFS)
- hdu 2553 N皇后问题 经典dfs
- N皇后问题(经典DFS())
- N皇后问题【DFS】
- n皇后问题(dfs)
- n皇后问题<dfs>
- <DFS> N皇后问题
- N皇后问题<DFS>
- dfs n皇后问题
- 【DFS】N皇后问题
- DFS--N皇后问题
- N皇后问题(DFS)
- hdu 2553 N皇后问题 经典搜索,DFS解法
- 杭电-N皇后问题(经典DFS搜索)
- N皇后问题(DFS)
- GCD里面的关键字理解
- linux进程利用文件通信
- QWebEngine与JS交互
- tensoflow练习2:利用Recurrent Neural Network 进行分类
- iOS 自定义Cell拖拽的另一种形式
- N皇后问题<经典DFS>
- ORACLE 常用函数——日期/时间函数
- Spring+Hibernate双数据源测试Mysql集群读写分离
- SQL连接的几种方式
- 设计模式-18-备忘录模式
- 虚拟机里部署java web工程
- HDU 2008
- Android 不要错过的 7 个完整项目学习
- 【项目实战】——Tree树显示过程核心