文章标题 HDU 2553 : N皇后问题 (DFS)
来源:互联网 发布:新疆商务厅 数据分析 编辑:程序博客网 时间:2024/06/14 05:51
N皇后问题
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
Input
共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
Output
共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
Sample Input
1
8
5
0
Sample Output
1
92
10
题意:是中文的所以就不用多说了
分析:可以用DFS,用place【i】来表示第i行的皇后放在第place【i】列,然后判断如果index表示当前到达的行数,遍历所有的列,然后遍历已经放置的皇后的位置与当前的位置是否合理
(1)如果place【index】== place【j】说明在同一列不符合题意
(2)如果fabs(index-j)==fabs(i-place[j]),说明在同一斜线上,其中index-j表示两个皇后位置的行数的差值,index-place[j]表示两个皇后位置的列数的差值
代码:
#include<iostream>#include<string>#include<cstdio>#include<cstring>#include<vector>#include<math.h>#include<map>#include<queue> #include<algorithm>using namespace std;const int inf = 0x3f3f3f3f;int n;int place[11];//place[i]表示皇后放置在第i行的第place[i]列 int ans[11];//用来保存有i个皇后的答案的 void dfs(int index,int n,int &cnt){//index表示深度,n表示数目,cnt表示解法的数目 if (index>n){//如果大于n说明n个皇后已经放置好了解法+1 cnt++; return; } int flag; for (int i=1;i<=n;i++){//遍历所有的列 place[index]=i;//如果放在第i列 int flag=1;//判断是否符合位置 for (int j=1;j<index;j++){ //判断是否合理 //第一个判断是否在同一列,第二个是否在同一斜线上 if (place[j]==i||fabs(index-j)==fabs(i-place[j])){ flag=0; break; } } if (flag){//如果符合则判断下一行 dfs(index+1,n,cnt); } }}int main (){ //先初始化,不然会超时 for (int i=1;i<=10;i++){ int cnt=0; dfs(1,i,cnt); ans[i]=cnt; } while (cin>>n){ if (n==0)break; printf ("%d\n",ans[n]); } return 0;}
0 0
- 文章标题 HDU 2553 : N皇后问题 (DFS)
- hdu 2553 N皇后问题(dfs)
- HDU 2553 N皇后问题(dfs)
- 【HDU】2553 - N皇后问题(dfs)
- 【HDU】-2553-N皇后问题(DFS)
- HDU 2553 N皇后问题(DFS)
- HDU 2553 N皇后问题(dfs)
- HDU 2553 N皇后问题 深搜-dfs
- HDU 2553 N皇后问题( DFS + 剪枝 )
- 【DFS】hdu 2553 N皇后问题
- hdu 2553 N皇后问题 (经典DFS)
- hdu 2553 N皇后问题 DFS
- HDU 2553 N皇后问题 (搜索DFS)
- hdu 2553 N皇后问题(DFS+回溯)
- HDU 2553 N皇后问题 DFS
- hdu 2553 N皇后问题(dfs)
- HDU 2553--N皇后问题【DFS】
- 【dfs+回溯】hdu 2553 N皇后问题
- oracle数据库分页查询原理与事例实现(五六种方法)
- spring mvc 中对静态资源的访问配置
- 读书的意义所在。
- AngularJS简单入门案例
- Qt4 Phonon多媒体框架详解及简单实例
- 文章标题 HDU 2553 : N皇后问题 (DFS)
- 5.Ext JS actioncolumn动态加载图标/提示
- ARM架构图
- python string
- jQuery_表单元素过滤选择器
- [Unity]利用Mesh在Unity中绘制扇形图片2
- 二叉树的创建和遍历
- MySQL学习日志 数据库的基本命令
- Eclipse最有用的快捷键