HDU-2553N皇后问题(dfs)
N皇后问题
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
解题思路:
标记走过的点为1,判断下一个点能不能走时,要判断他的8个方向上所有的点,然后回溯,记得要打一个表,之前我没打表时间超限了
程序代码:
#include<stdio.h>
#include<string.h>
void dfs(int s,int step);
int n,book[15][15],count,a[15];
int eight(int x,int y);
int main()
{int i,j,m;for(n=1;n<=10;n++){count=0;memset(book,0,sizeof(book));dfs(0,1);a[n]=count;}while(scanf("%d",&m)!=EOF){if(m==0)break;printf("%d\n",a[m]);}return 0;
}
int eight(int x,int y)
{int i,k,tx,ty;int next[8][2]={1,0, 0,1, -1,0, 0,-1, 1,1, 1,-1, -1,1, -1,-1};for(k=0;k<8;k++){for(i=1;i<n;i++){tx=x+i*next[k][0];ty=y+i*next[k][1];if(tx<0||tx>=n||ty<0||ty>=n)break;if(book[tx][ty]==1)return 0;}}return 1;
}
void dfs(int s,int step)
{int i,j;if(s==n)return;for(i=0;i<n;i++){if(book[s][i]==0&&eight(s,i)==1){book[s][i]=1;if(step==n)count++;dfs(s+1,step+1);book[s][i]=0;}}return;
}
HDU-2553N皇后问题(dfs)相关推荐
- 洛谷 P1219-八皇后(dfs回溯)
题目描述 网址传送:https://www.luogu.com.cn/problem/P1219 八皇后问题描述:介是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于 ...
- hdu 5325 Crazy Bobo dfs
// hdu 5325 Crazy Bobo // // 题目大意: // // 给你一棵树,树上每一个节点都有一个权值w,选择尽可能多的节点, // 这些节点相互联通,而且依照权值升序排序之后得到节 ...
- python深度优先算法 八皇后_八皇后问题——DFS(深度优先搜索)
八皇后问题,是在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法? 算法思路: 八皇后问题实质为一种深度优先(DFS)搜索问题. ...
- hdu2553 N皇后问题-dfs回溯剪枝+打表
Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上. 你的任务是,对于给定的N ...
- The Sultan's Successors (八皇后)DFS
The Sultan's Successors 原题链接https://vjudge.net/contest/345248#problem/F 八皇后问题,既在8*8的棋盘中放置8个皇后,每行,每列, ...
- 洛谷P1562 还是N皇后(DFS+状态压缩+位运算)
八皇后问题的介绍在此不再赘述,只贴一下经典八皇后问题的实现代码(参考刘汝佳 <算法竞赛入门经典>) void search(int i) {if(i>n){ans++;return; ...
- 2n皇后问题 dfs
问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行.同一列或同一 ...
- hdu 1298 字典树 + DFS (模拟T9文本输入)
题意: 给你一些按键顺序,让你输出每一步中概率最大的那个单词,这里的概率计算方 法好好看看别弄错了,一开始就是因为弄错了,各种wa,比如 abc 1 ,ab 1,那么 ab 的概率就是2 ...
- hdu 4309 最大流 + DFS
题意: 给以三种有向边 (1) 隧道,可以过无数人,也可以藏c个人. (2) 路,只能过人(流量INF). (3)古桥,如果不修理可以过1个人,修理可以过无数个人,但 ...
- hdu 1584蜘蛛牌(DFS)
蜘蛛牌 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
最新文章
- Square Card 计算几何-两圆相交面积
- 百度不收录你网站的原因
- 虚拟化精华问答 | 虚拟化技术分类
- win11搜索位置在哪 Windows11搜索位置的设置方法
- 基于朴素贝叶斯分类器的西瓜数据集 2.0 预测分类_第十章:利用Python实现朴素贝叶斯模型
- Java开发两年:java简历包装工作经验
- 服务器修改ip socket,socket不能选择本地IP连接的解决方法
- mvc新增,上架及下架
- linux高通内核移植工具十教程
- Itunes降级(卸载+安装)+苹果软件降级安装(爱思+ITunes)
- 大数据与云计算的关系?
- 火狐浏览器书签无法删除解决方案
- 解密excel.xls文件密码
- Excel 多级下拉菜单设置,数据有效性
- 微生物组-扩增子16S分析和可视化(线上/线下,本周开课,2021.7)
- 学计算机颈椎,电脑颈
- 感谢ZhangYu dalao回关
- svg实现圆环倒计时动画效果
- 【ShaderToy】跳动的心❤️
- 搭建React项目,超简单教程