[ An Ac a Day ^_^ ] hdu 2553 N皇后问题 搜索
曾经想过一天一AC 坚持下来的确不容易额 (我是没坚持下来 尽量以后坚持……
经典的N皇后问题 搜索的入门问题 学了这么久竟然一直没敲过 今天敲一下……
这道题也不是很简单额 纯暴力就超时了 要打一下表……
而且有一个小的优化
每次判断是否合理不用铺满图再判断
只需要判断当前放皇后的位置的上方 左上和右上有没有皇后就可以了
自己想也不好想-_-||
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<string.h>
#include<string>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<list>
#define M(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int maxn=1e1+;
int dx[]= {,,,-,,-,,-};
int dy[]= {,-,,,-,,,-};
//---------------------------------------ヽ(^。^)丿
int cnt,n,ans[maxn];
int _map[maxn];
void dfs(int x)
{
if(x>n)
{//只要能搜到这一步一定符合条件了
cnt++;
return ;
}
for(int i=; i<=n; i++)
{
_map[x]=i; //放置皇后
bool ok=true;
for(int j=x-;j>=;j--)
if(_map[j]==i|| //正上方
_map[j]==i-x+j|| //左上方
_map[j]==i+x-j) //右上方
ok=false;
if(ok) dfs(x+); //符合条件继续搜索
}
return ;
}
int main()
{
M(ans,-);
while(~scanf("%d",&n)&&n)
{
if(ans[n]!=-)
printf("%d\n",ans[n]);
else
{
M(_map,-);
cnt=;
dfs();
ans[n]=cnt; //打表
printf("%d\n",cnt);
}
}
return ;
}
/* 1
8
5
0 */
[ An Ac a Day ^_^ ] hdu 2553 N皇后问题 搜索的更多相关文章
- [HDU 2553]--N皇后问题(回溯)/N皇后问题的分析
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2553 N皇后问题 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 2553 n皇后问题(回溯法)
DFS Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description ...
- hdu 2553 N皇后
这题要打表,不然超时. AC代码 #include<cstdio> #include<cstring> int n,cnt; int vis[3][20]; int ans[1 ...
- HDU 2553(N皇后)(DFS)
http://acm.hdu.edu.cn/showproblem.php?pid=2553 i表示行,map[i]表示列,然后用DFS遍历回溯 可以参考这篇文章: http://blog.csdn. ...
- hdu 2553 N皇后问题
回溯. 一个主对角线,副对角线的技巧 //vis[0][i]表示第i列有没有皇后 vis[1][cur+i]表示副对角线 vis[2][cur-i+n]表示主对角线 #include <cstd ...
- hdu 2553 N皇后问题 (经典DFS)
题目链接:点击链接 思路:用一维数组hang[num] = i,num表示第num行,i表示第i列,计算n = 1~10皇后的不同放置数量,然后打表 #include<stdio.h> # ...
- HDU 2553 N皇后问题(详细题解)
这是一道深搜题目!问题的关键是在剪枝. 下面我们对问题进行分析: 1.一行只能放一个皇后,所以我们一旦确定此处可以放皇后,那么该行就只能放一个皇后,下面的就不要再搜了. 2.每一列只能放一个皇后,所以 ...
- HDU 2553 N皇后问题(dfs)
N皇后问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description 在 ...
- hdu 2553 n皇后问题【DFS递归解法】
<题目链接> 题目大意: Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45 ...
随机推荐
- Web Scraper使用
{ "selectors": [{ "parentSelectors": ["_root"], "type": &quo ...
- ele.me在IOS浏览器端启动APP的技巧分析
ele.me在IOS浏览器端启动APP的技巧分析 巧妙利用后台重定向,在schemes启动时提示用户打开,启动不了APP时能够及时跳转至下载页面. 避免报错页面的出现以及用户还没来的及选择就跳转到下载 ...
- 第 2 章 Node.js 中的交互式运行环境 —— REPL
本章内容包括: 如何使用REPL运行环境以及如何在该运行环境中测试各种JavaScript表达式. 如何定义并启动REPL运行环境. Node.js 框架中为REPL运行环境提供了哪些命令以及这些命令 ...
- 我是如何给discuz模板做语法高亮的
本人一直做ASP.NET开发,近期接到任务要用Discuz开发一个社区,第一次接触PHP,PHP灵活的语法,天生的模块化,各种语法糖深深的震惊了我,我从内心深处感受到了PHP是最牛逼的语言!!! 好了 ...
- c++ 随手记
强类型的理解 先定义一些基础概念 Program Errors trapped errors.导致程序终止执行,如除0,Java中数组越界访问 untrapped errors. 出错后继续执行,但可 ...
- Pass和ClassPath变量配置
1.pass环境变量配置的是可执行性文件bin目录,是为了在任意盘符下都可以运行javac.exe和java.exe所配置的. 2.classpath环境变量记录的是java类运行文件所在的目录,一般 ...
- 给go添加各种package
go version 1.1.2 For example you need to install the webscoket pakeage try go get code.goo ...
- SharpZipLib.dll 压缩文件,可以应用于MVC, webform. C# windows application 等等地方
Nuget 安装:Install-Package ICSharpCode.SharpZipLib.dll private void WriteZipFile(string[] filesToZip, ...
- 10s后自动跳转
<div class="jf_register"> <h2>您好,欢迎光临<fmt:message key="b2cShowName&quo ...
- LeetCode 453. Minimum Moves to Equal Array Elements C#
Given a non-empty integer array of size n, find the minimum number of moves required to make all arr ...