深度优先搜索——八皇后问题
代码:(控制台打印不了92种情况,只打印前10种)
1 #include<iostream> 2 #include<string> 3 #include<windows.h> 4 #define ok 1 5 #define error 0 6 using namespace std; 7 8 9 int a[9][9]={0}; 10 int num=0; 11 12 int Ifblock(int x,int y) //判断有没有产生冲突 13 { 14 int i,j,k; 15 j=y; 16 k=y; 17 for(i=x-1;i>0;i--) 18 { 19 if(a[i][y]==1) 20 return error; 21 if((--j)>0&&a[i][j]==1) 22 return error; 23 if((++k)<9&&a[i][k]==1) 24 return error; 25 } 26 return ok; 27 } 28 29 int DFS(int step) //深度优先搜索核心代码 30 { 31 int i,j,k; 32 if(step==9) 33 { 34 num++; 35 if(num<=10) 36 { 37 for(j=1;j<9;j++) 38 { 39 for(k=1;k<9;k++) 40 { 41 printf("%2d",a[j][k]); 42 } 43 cout<<'\n'; 44 } 45 cout<<'\n'<<endl; 46 } 47 return ok; 48 } 49 for(i=1;i<9;i++) 50 { 51 if(Ifblock(step,i)) 52 { 53 a[step][i]=1; 54 //step++ 55 DFS(step+1); 56 a[step][i]=0; 57 } 58 } 59 return ok; 60 } 61 62 int main() 63 { 64 int step=1; 65 DFS(step); 66 cout<<"一共"<<num<<"种可能"<<endl; 67 return 0; 68 }
转载于:https://www.cnblogs.com/fangyan5218/p/4728318.html
深度优先搜索——八皇后问题相关推荐
- 深度优先搜索——八皇后问题(洛谷 P1219)
题目选自洛谷P1219 该题针对6-13皇后都行,只需改动输入的数字. 八皇后问题是经典的DFS问题,唯一需要注意的就是判断能够放置的条件,即满足什么状况是对的. 题目要求不能在同一行,同一列 ...
- python深度优先算法 八皇后_八皇后问题——DFS(深度优先搜索)
八皇后问题,是在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法? 算法思路: 八皇后问题实质为一种深度优先(DFS)搜索问题. ...
- 用全排列的方法解决八皇后问题
用百度搜索八皇后问题,几乎清一色都是用回溯,有兴趣的同学可参考:从全排列和八皇后问题谈回溯. 解决一个问题,我们应该充分利用已有的条件,化繁为简. $a=[0,1,2,3,4,5,6,7]; 可以看到 ...
- python8皇后不攻击问题_python 八皇后问题的解法(深度搜索)
共本文介绍如何用深度搜索的方式求解8皇后(其实也可以求解N皇后)问题的解 八皇后问题描述 在国际想起的规则中,皇后能攻击八个方向上的棋子,而且不受距离限制. 皇后的攻击方向如下图所示: 八皇后问题则是 ...
- 【深度优先搜索】20行代码解决8皇后问题
八皇后算法描述如下: 在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法! 用dfs解决: 搜索策略如下: 从第0行开始,我们依次 ...
- 深度优先搜索解决八数码问题
//程序描述:基于盲目搜索策略的宽度优先搜索方法#include <iostream> #include <string> #include <cstring> # ...
- 【C++】【学习笔记】【递归与回溯问题详解与例题】排列问题;组合问题;二维平面回溯;flood fill问题;搜索问题(八皇后);
目录 七.递归和回溯 1.回溯 2.回溯应用 - 排列问题 2.回溯应用 - 组合问题 3.回溯应用 - 二维平面 4.回溯应用 - floodfill算法 问题 4.回溯应用 - 搜索问题 - 八皇 ...
- python DFS深度优先搜索及N皇后问题求解
DFS可谓是算法里的一个大头,不懂DFS都不敢承认自己学过数据结构.今天菜鸡我要逆袭了,先从经典的N皇后问题搞起,试试DFS水深几尺[略加思索] 内容篇幅有点长,不想看我对DFS嗷嗷叫的朋友还是直接去 ...
- 八皇后 深度优先 广度优先 位运算
对于八皇后问题,大家应该都不陌生,只要接触过算法的,必然都会接触到这到题.对于八皇后的问题不在此叙述,可以直接百度.对于八皇后问题的解决思路,可以直接根据题目的要求便可以得到. 总的来说,就是下一个皇 ...
最新文章
- 第十九章——使用资源调控器管理资源(2)——使用T-SQL配置资源调控器
- ASP.NET保持用户状态的九种选择
- 与其焦虑成疾,不如静心学习
- Archlinux里面安装VMware Tools
- mac下使用git的冲突的解决方案
- LeetCode_349. 两个数组的交集
- oracle进城有哪些,oracle主要进程详解
- React学习:生命周期、过滤器、event、axios-学习笔记
- 系统设计题:如何设计一个电商平台积分兑换系统!
- 蓝桥杯 算法训练 最大最小公倍数
- 手机端放在线条中间的标题
- 103.及时清除缓存
- 使用 Productivity Power Tools 高级扩展 来帮助你提高 VS2012 的工作效率
- python微信图标制作_Python十分钟制作属于你自己的个性logo
- [ERROR CRI]: unable to check if the container runtime at “/var/run/dockershim.sock“
- 深度学习笔记(三):激活函数和损失函数
- python利用字典破解WIFI密码
- ABB机器人紧凑型控制柜内部结构(图)
- iPhone6和iPhone6Plus的适配
- java severlet 获取当前路径_Java 获取当前路径的方法总结
热门文章
- java.util.ComparableTimSort中的sort()方法简单分析
- Linux中常见目录的作用
- 全国计算机等级考试题库二级C操作题100套(第35套)
- linux添加window启动
- c++ linux 线程等待与唤醒_C++并发编程 等待与唤醒
- 操作系统的运行机制和体系结构
- 手机技巧:手机电量为啥到20%就会提醒充电,看完你就懂了!
- 电脑技巧:键盘上最长的按键空格键使用技巧!
- 柱坐标系下的ns方程_麦克斯韦方程组小结
- Java正则表达式较验手机号、邮箱