c++深度优先搜索详解

本文详细介绍了深度优先搜索(DFS)的概念、算法过程,并提供了C++实现的代码示例,包括递归框架和解决实际问题的案例,如数字序列构造和n-皇后问题。此外,还展示了利用DFS进行寻路的示例代码,通过栈存储路径,动态更新地图状态,找到出口。

目录

哈喽

dfs乃何物?

DFS算法过程:

dfs基本框架

题目1

代码

题目2 n-皇后问题

代码

寻路

 代码

最后


哈喽

各位好

晚上从沙发上起来,端坐在电脑前

我大抵是无聊了

思前想后,我还是写下了 c++深度优先搜索(DFS)详解

这是很容易的,也有暴力的影子

俗话说:暴搜挂着机,打表出省一。偏分过样例,暴力出奇迹。

dfs乃何物?

DFS(Depth First Search) ,即 深度优先搜索 ,是一种遍历图的方式。

比如这张图(用鼠标写数字有点丑)

我们要找到4这个值

假设从1开始找

1没找到

再找2,2也没找到,

找3,3又没找到

发现已经走到头了

再一步一步回溯到1,走另外一条路,找到了4

总结一下,dfs会在搜索到新点时优先访问以改点为起点的子节点,并在所有子节点访问完成后回溯,可以看出,dfs和递归殊途同归。
相反地,有BFS(Breath First Search)广度优先搜索,用bfs访问上例时访问顺序为:1,2,4,3。程序会访问完当前节点的所有子节点,一层一层向下搜。

练练英语:

DFS will preferentially visit the child nodes starting from the change point when searching for a new point, and backtrack after all the child nodes are accessed. It can be seen that DFS and recursion come to the same destination.
In contrast, Breath First Search (BFS) is the breadth-first Search. When BFS is used to access the above example, the access sequence is 1,2,4,3. The program accesses all the children of the current node, level by level down.

懂了吗?就这么简单

DFS算法过程:

1、任选一顶点作始点 v ,访问该顶点
2、沿深度方向,依次遍历 v 的未访问邻接点——直到本次遍历结束
3、一次遍历完时,若有未访问顶点:任选一个未访问顶点作起始点,GOTO第二步

评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值