hdu N皇后问题
此题是很基本的dfs的题目 ,但是要打表,否则会超时。
这题的思路就是从第一行一直放到第n行,因此行方面的判断就可以省略了。因此只要判断列方面和斜线方面是否满足条件,列方面用一个vis数组来记录是否已放过皇后就可以了,
斜线上只要判断abs(k-j)是否等于(maze[k]-maze[j])就可以了。
#include"iostream"
#include"stdio.h"
#include"string.h"
#include"string"
#include"algorithm"
#include"cmath"
#define mx 105
using namespace std;
int n,Count;
int maze[mx];
int vis[mx];
int solve[mx];
void dfs(int k)
{
int i,j,flag;
if(k==n+)
{
Count++;
return;
}
for(i=;i<=n;i++)
{
if(!vis[i])
{
maze[k]=i;
flag=;
for(j=;j<=k-;j++)//判断是否在同一个斜线上
{
if(abs(k-j)==abs(maze[k]-maze[j]))
{
flag=;break;
}
}
if(flag)
{
vis[i]=;
dfs(k+);
vis[i]=;
} }
}
}
int main()
{
for(int i=;i<=;i++)
{
Count=;
memset(vis,,sizeof(vis));
memset(maze,,sizeof(maze));
n=i;
dfs();
solve[i]=Count;
} while(cin>>n,n)
{
cout<<solve[n]<<endl;
}
return ;
}
hdu N皇后问题的更多相关文章
- [HDU 2553]--N皇后问题(回溯)/N皇后问题的分析
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2553 N皇后问题 Time Limit: 2000/1000 MS (Java/Others) ...
- N皇后问题-Hdu 2553
题目描述: 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上. 你的任务是,对于给定的N,求出有多少种合法的放置 ...
- hdu 2553 N皇后问题
回溯. 一个主对角线,副对角线的技巧 //vis[0][i]表示第i列有没有皇后 vis[1][cur+i]表示副对角线 vis[2][cur-i+n]表示主对角线 #include <cstd ...
- HDU 2553 (状压) N皇后问题 (2)
也许大多数做法都是打表,但这里用位运算的思想来解决这个问题,位运算果然强大,Orz 原文地址,感觉讲的很明白了: http://www.cnblogs.com/gj-Acit/archive/2013 ...
- hdu 2553 N皇后问题 (经典DFS)
题目链接:点击链接 思路:用一维数组hang[num] = i,num表示第num行,i表示第i列,计算n = 1~10皇后的不同放置数量,然后打表 #include<stdio.h> # ...
- HDU(搜索专题) 1000 N皇后问题(深度优先搜索DFS)解题报告
前几天一直在忙一些事情,所以一直没来得及开始这个搜索专题的训练,今天做了下这个专题的第一题,皇后问题在我没有开始接受Axie的算法低强度训练前,就早有耳闻了,但一直不知道是什么类型的题目,今天一看,原 ...
- HDU 2553 N皇后问题(详细题解)
这是一道深搜题目!问题的关键是在剪枝. 下面我们对问题进行分析: 1.一行只能放一个皇后,所以我们一旦确定此处可以放皇后,那么该行就只能放一个皇后,下面的就不要再搜了. 2.每一列只能放一个皇后,所以 ...
- HDU 2553 n皇后问题(回溯法)
DFS Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description ...
- HDU 2553 N皇后问题(dfs)
N皇后问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description 在 ...
随机推荐
- C语言字符串操作常用库函数
C语言字符串操作常用库函数 *********************************************************************************** 函数 ...
- css学习(2)-- 常见的CSS属性和值
1.CSS中修饰字体的属性 属 性 描 述 属 性 值 font-family 字体族科 任意字体族科名称都可以使用例如Times.serif等,而且多个族科的赋值是可以使用的,中间用 ...
- 【HTML+CSS】七小时快速入门~~~~~~~
由于网络化的原因,学习很方便,但是也由于太方便了,学习资料很多会给刚想要入门却没有什么自制力的初学者造成困难,我自己来说学html和css先看了一本书,后来又辗转在慕课网.w3cschool等学习网站 ...
- 《DSP using MATLAB》示例Example4.2
- EF框架step by step(5)—处理实体简单属性
EF框架会对实体进行跟踪,对实体的每个属性当前值和原始值及其状态进行跟踪,记录.当前值是指实体属性当前的被赋予的值,而原始值是指实体最初从数据库读取或者附加到DbContext时的值. 先通过简单的代 ...
- linux内存分配
在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序.或是读取刚存取过 ...
- Java解析文本
import java.io.*; import java.util.*; public class FileManager { public List<Dishes> parseFile ...
- Android开发环境变量配置总结
每次重装系统或者拿到一台新电脑都得重配Android的环境变量,每次都得上网查,索性就记在这儿吧. “系统属性->高级系统设置->环境变量” 打开环境变量配置窗口. JDK配置: 新建JA ...
- gulp plugins 插件介绍
目录 [−] gulp API gulp.src(globs[, options]) gulp.dest(path[, options]) gulp.task(name[, deps], fn) gu ...
- BZOJ 1468 & 点分治
题意: 带权树,求距离小于k的点对数目. SOL: 参考http://blog.csdn.net/jiangshibiao/article/details/25738041解决了题意问题... 代码是 ...