博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深度优先搜索
阅读量:6716 次
发布时间:2019-06-25

本文共 1965 字,大约阅读时间需要 6 分钟。

/* * 输入一个指定点的数n,输出1-n的全排列,要求n<10*/#include 
using namespace std;int a[10];int book[10];int n;void dfs(int step);int main(){ cout << "Hello World!" << endl; cin >> n; dfs(1); //站在第一个盒子前面 return 0;}void dfs(int step){ int i; if(step == n+1) //已经走完了所有的盒子 { for(i = 1;i <= n;i++) { cout << a[i]; } cout << endl; return ; } for(i = 1;i <= n;i++) { if(book[i] == 0) //手中可用的扑克牌 { a[step] = i; book[i] = 1; //该扑克牌不再能使用 dfs(step+1); //往后移动了一个小盒子 book[i] = 0; //把这张扑克牌收回 } } return;}

第二个题目

1327401-20190112174444859-1232653492.png
将1-9分别填入9个方框中,每个数字只能用一次使得等式成立。例如173+286=459就是一个合理的组合,请求出所有组合。

/* * 输入一个指定点的数n,输出1-n的全排列,要求n<10*/#include 
using namespace std;int a[10];int book[10];int n;void dfs(int step);int main(){ cout << "Hello World!" << endl; cin >> n; dfs(1); return 0;}void dfs(int step){ int i; if(step == n+1) //已经走完了所有的盒子 { if(a[1]*100 +a[2]*10+a[3]+a[4]*100+a[5]*10+a[6] == a[7]*100+a[8]*10+a[9]) { for(i = 1;i <= 3;i++) { cout << a[i]; } cout << " + "; for(i = 4;i <= 6;i++) { cout << a[i]; } cout << " = "; for(i = 7;i <= 9;i++) { cout << a[i]; } cout << endl; } return ; } for(i = 1;i <= n;i++) { if(book[i] == 0) //手中可用的扑克牌 { a[step] = i; book[i] = 1; //该扑克牌不再能使用 dfs(step+1); //往后移动了一个小盒子 book[i] = 0; //把这张扑克牌收回 } } return;}

笔记

深度优先搜索的关键在于解决“当下该如何做”。至于“下一步如何做”则与“当下该如何做”是一样的。
下面的代码是深度优先搜索的模型

void dfs(int step){    判断边界    尝试每一种可能 for(i=1;i<=n;i++)    {        继续下一步 dfs(step+1);    }    返回}

每一种尝试就是一种扩展。每一次站在一个盒子面前的时候,其实都有n中扩展方法,但是并不是每种扩展都能扩展成功。

转载于:https://www.cnblogs.com/Manual-Linux/p/10260436.html

你可能感兴趣的文章
Android Runtime Stats
查看>>
InstallShield卸载状态
查看>>
CentOS7 修改主机名
查看>>
小工具:天气查询 Vs自定义设置 DevGridControl中GridView排序问题 小工具:火车票查询 小工具:邮件发送 小工具:截图&简单图像处理...
查看>>
11.QT-布局管理器(Box,Grid,Form,Stacked)
查看>>
用 Anaconda 完美解决 Python2 和 python3 共存问题
查看>>
易语言飞扬学习
查看>>
Android 自定义Android ORM 框架greenDAO数据库文件的路径
查看>>
python程序打包成.exe
查看>>
oc懒加载 & swift lazy
查看>>
CUDA 编程的基本模式
查看>>
git命令行解决冲突文件步骤
查看>>
List、Map、Set三个接口,存取元素时,各有什么特点?
查看>>
js进阶 12-6 监听鼠标滚动事件和窗口改变事件怎么写
查看>>
HttpClient的基本使用
查看>>
Tomcat 7服务器线程模型
查看>>
idea设置断点,对于for循环,到指定次数时停止
查看>>
lua中面向对象(class)实现探索(一)(转)
查看>>
Model元数据定制与Model模板
查看>>
JS异常简单处理
查看>>