http://acm.hdu.edu.cn/showproblem.php?pid=2553

N皇后问题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 8077    Accepted Submission(s): 3603



Problem Description
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即随意2个皇后不同意处在同一排,同一列,也不同意处在与棋盘边框成45角的斜线上。

你的任务是。对于给定的N,求出有多少种合法的放置方法。



Input
共同拥有若干行,每行一个正整数N≤10。表示棋盘和皇后的数量;假设N=0,表示结束。
 
Output
共同拥有若干行。每行一个正整数。表示相应输入行的皇后的不同放置数量。
 
Sample Input
1
8
5
0

Sample Output
1
92
10
 这个问题最终理解啦!还记得第一次接触这个问题时一直在逃避,认为感觉起来好麻烦,不想去思考,在昨天经过队友不厌其烦特别耐心的给我解说了这个问题的思路以及解决方法之后感觉豁然开朗啊!
这个问题应用了深搜,回溯的思想。第一个是非常好放的,后面的就得慢慢来的,后面若碰到了不能放的就调整上一层,直到所有搜完。*-*
以下是我理解这个问题的代码,仅用于理解:
#include<iostream>
#include<string.h>
int tot,c[20],n; void search(int cur)//cur控制行
{
int i,j;
if(cur==n)
tot++;
else
for(i=0;i<n;i++)
{
int ok=1;
c[cur]=i;//i控制列;
for(j=0;j<cur;j++)
if(c[cur]==c[j]||cur-c[cur]==j-c[j]||cur+c[cur]==j+c[j])//推断行列,左右对角是否符合条件;
{
ok=0;
break;
}//不合格跳出到i++。
if(ok)
search(cur+1);
}
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
if(n==0)break;
tot=0;
search(0);//从0行開始搜索。
printf("%d\n",tot);
}
return 0;
}

这个代码提交的时候时间不合格。要打表。。。

AC代码例如以下:
#include<iostream>
#include<cstring>
using namespace std;
int vis[20][20],w[12];
int n,tot;
void dfs(int x){
int i;
if(x == n) tot++;
else{
for(i=0;i<n;i++){
if(!vis[0][i] && !vis[1][x+i] && !vis[2][x-i+n])//不同行列对角。
{
vis[0][i]=vis[1][x+i]=vis[2][x-i+n]=1;//改动全局变量。
dfs(x+1);
vis[0][i]=vis[1][x+i]=vis[2][x-i+n]=0;//改回来。
}
}
}
}
int main(){
int j,a;
for(j=1;j<=10;j++)//打表,控制在1到10。
{
tot=0;
memset(vis,0,sizeof(vis));
n=j;
dfs(0);
w[j]=tot;
}
while(scanf("%d",&a) && a)
{
printf("%d\n",w[a]);
}
return 0;
}

杭电 2553 N皇后问题的更多相关文章

  1. 杭电 2553 N皇后问题 (dfs)

    Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上. 你的任务是,对于给定的N,求出有多少种合 ...

  2. 杭电ACM题单

    杭电acm题目分类版本1 1002 简单的大数 1003 DP经典问题,最大连续子段和 1004 简单题 1005 找规律(循环点) 1006 感觉有点BT的题,我到现在还没过 1007 经典问题,最 ...

  3. 杭电acm习题分类

    专注于C语言编程 C Programming Practice Problems (Programming Challenges) 杭电ACM题目分类 基础题:1000.1001.1004.1005. ...

  4. acm入门 杭电1001题 有关溢出的考虑

    最近在尝试做acm试题,刚刚是1001题就把我困住了,这是题目: Problem Description In this problem, your task is to calculate SUM( ...

  5. 杭电acm 1002 大数模板(一)

    从杭电第一题开始A,发现做到1002就不会了,经过几天时间终于A出来了,顺便整理了一下关于大数的东西 其实这是刘汝佳老师在<算法竞赛 经典入门 第二版> 中所讲的模板,代码原封不动写上的, ...

  6. 杭电OJ——1198 Farm Irrigation (并查集)

    畅通工程 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可 ...

  7. 杭电ACM分类

    杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...

  8. 高手看了,感觉惨不忍睹——关于“【ACM】杭电ACM题一直WA求高手看看代码”

    按 被中科大软件学院二年级研究生 HCOONa 骂为“误人子弟”之后(见:<中科大的那位,敢更不要脸点么?> ),继续“误人子弟”. 问题: 题目:(感谢 王爱学志 网友对题目给出的翻译) ...

  9. C#利用POST实现杭电oj的AC自动机器人,AC率高达50%~~

    暑假集训虽然很快乐,偶尔也会比较枯燥,,这个时候就需要自娱自乐... 然后看hdu的排行榜发现,除了一些是虚拟测评机的账号以外,有几个都是AC自动机器人 然后发现有一位作者是用网页填表然后按钮模拟,, ...

随机推荐

  1. upper_bound()和lower_bound()

    ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个非递减序列[first, la ...

  2. hdu 1099(数学)

    Lottery Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  3. AC日记——圆桌聚餐 cogs 729

    729. [网络流24题] 圆桌聚餐 ★★   输入文件:roundtable.in   输出文件:roundtable.out   评测插件时间限制:1 s   内存限制:128 MB «问题描述: ...

  4. 最简单的window下使用Jenkins来做自动化部署的教程

    今天我们来说一下,如何使用Jenkins+powershell脚本,将我们的.NET CORE的脚本部署到对应的服务器上. 这里我们使用的源码管理工具是TFS.虽然源码管理器比较老旧,但是原理都差不多 ...

  5. 转载:P2P技术原理及应用(1)

    转帖allen303allen的空间 作 者:金海 廖小飞 摘要:对等网络(P2P)有3种主要的组织结构:分布式哈希表(DHT)结构.树形结构.网状结构.P2P技术已 经延伸到几乎所有的网络应用领域, ...

  6. 【iOS开发-58】tableView初识:5个重要方法的使用和2种样式的差别

    创建一个tableView,直接拖拽放在storyboard里面就可以. (1)先创建一个数据模型类WSCarGroup,在WSCarGroup.h文件里: #import <Foundatio ...

  7. 赞一下TMS Software 和 AdvStringGrid

    非常久前给Support发Email问能不能在设计期给AdvStringGrid标题加个数字标识.每次我都是自己改代码加上去.这次升级到新版本号,没想到增加了这个功能: 功能虽小可是非常有用,非常多的 ...

  8. js利用offsetWidth和clientWidth来计算滚动条的宽度

    原文: http://www.haorooms.com/post/js_scroll_width 参考: https://www.cnblogs.com/benxiaohai-microcosm/p/ ...

  9. php 的$_POST 和$_REQUEST的区别

    发现$_POST 没数据,而$_REQUEST 有数据 ----------------------------------------- https://stackoverflow.com/ques ...

  10. hdu5379||2015多校联合第7场1011 树形统计

    pid=5379">http://acm.hdu.edu.cn/showproblem.php? pid=5379 Problem Description Little sun is ...