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)相关推荐

  1. 洛谷 P1219-八皇后(dfs回溯)

    题目描述 网址传送:https://www.luogu.com.cn/problem/P1219 八皇后问题描述:介是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于 ...

  2. hdu 5325 Crazy Bobo dfs

    // hdu 5325 Crazy Bobo // // 题目大意: // // 给你一棵树,树上每一个节点都有一个权值w,选择尽可能多的节点, // 这些节点相互联通,而且依照权值升序排序之后得到节 ...

  3. python深度优先算法 八皇后_八皇后问题——DFS(深度优先搜索)

    八皇后问题,是在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法? 算法思路: 八皇后问题实质为一种深度优先(DFS)搜索问题. ...

  4. hdu2553 N皇后问题-dfs回溯剪枝+打表

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

  5. The Sultan's Successors (八皇后)DFS

    The Sultan's Successors 原题链接https://vjudge.net/contest/345248#problem/F 八皇后问题,既在8*8的棋盘中放置8个皇后,每行,每列, ...

  6. 洛谷P1562 还是N皇后(DFS+状态压缩+位运算)

    八皇后问题的介绍在此不再赘述,只贴一下经典八皇后问题的实现代码(参考刘汝佳 <算法竞赛入门经典>) void search(int i) {if(i>n){ans++;return; ...

  7. 2n皇后问题 dfs

    问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行.同一列或同一 ...

  8. hdu 1298 字典树 + DFS (模拟T9文本输入)

    题意:       给你一些按键顺序,让你输出每一步中概率最大的那个单词,这里的概率计算方 法好好看看别弄错了,一开始就是因为弄错了,各种wa,比如 abc 1 ,ab 1,那么 ab 的概率就是2 ...

  9. hdu 4309 最大流 + DFS

    题意:      给以三种有向边     (1) 隧道,可以过无数人,也可以藏c个人.     (2) 路,只能过人(流量INF).     (3)古桥,如果不修理可以过1个人,修理可以过无数个人,但 ...

  10. hdu 1584蜘蛛牌(DFS)

    蜘蛛牌 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

最新文章

  1. Square Card 计算几何-两圆相交面积
  2. 百度不收录你网站的原因
  3. 虚拟化精华问答 | 虚拟化技术分类
  4. win11搜索位置在哪 Windows11搜索位置的设置方法
  5. 基于朴素贝叶斯分类器的西瓜数据集 2.0 预测分类_第十章:利用Python实现朴素贝叶斯模型
  6. Java开发两年:java简历包装工作经验
  7. 服务器修改ip socket,socket不能选择本地IP连接的解决方法
  8. mvc新增,上架及下架
  9. linux高通内核移植工具十教程
  10. Itunes降级(卸载+安装)+苹果软件降级安装(爱思+ITunes)
  11. 大数据与云计算的关系?
  12. 火狐浏览器书签无法删除解决方案
  13. 解密excel.xls文件密码
  14. Excel 多级下拉菜单设置,数据有效性
  15. 微生物组-扩增子16S分析和可视化(线上/线下,本周开课,2021.7)
  16. 学计算机颈椎,电脑颈
  17. 感谢ZhangYu dalao回关
  18. svg实现圆环倒计时动画效果
  19. 【ShaderToy】跳动的心❤️
  20. 搭建React项目,超简单教程

热门文章

  1. python中使用C类型的数组
  2. Canvas入门03-绘制弧线和圆
  3. luogu P1586 四方定理(背包)
  4. Android远程桌面助手之功能简介
  5. JS每隔一段时间执行一个方法
  6. SQL存储过程与自定义函数实例
  7. 一些常用算法 练手的的代码
  8. Java——类和对象
  9. dp、px之间单位转换Util
  10. Selenium 窗口切换