回溯算法衍生(DFS vs BFS)篇

本文旨在分享BFS算法的实战应用,通过LeetCode的752题——打开转盘锁为例,解释BFS如何找到最小步数解。文章介绍了BFS的基本思想,强调同一层所有路径的遍历,并提供了一套标准模板。在解题过程中,特别指出每个拨轮的8种变化及死亡数字的影响。
摘要由CSDN通过智能技术生成

前言>写此文章的主旨中心是为了给阅读的同学提供一个只有干货+实战的心得体会, 方便没有自己的学习路线的同学能够快速了解一些问题的核心以及解决问题的思路.

当然了这些内容也不是自己思考出来的,也是通过学习别人的内容总结归纳出来的,所以对于博主来说也是一个学习成长以及记录的过程, 有一些不足之处还请谅解, 希望大家都能共同进步, 汲取更多的知识, 早日找到中意的工作~

首先要明确DFS与BFS的概念

DFS(深度优先遍历) : 本质上即为我们之前描述过的标准的回溯算法实现, 即逐层递进.

BFS(广度优先遍历) : 即同一层的所有路径在当次遍历中全部遍历到, 如果存在需要的指定结果, 则直接返回此时的限定步数, 常用来解决 找到某个需要解的最少需要步数问题

DFS这里我们不再赘述了, 之前已经写过很多内容了, 我们这部分主要通过一个问题解决BFS的问题

首先明确BFS的一套标准模板

 

下面我们用一道题来说明当前模板的使用方式

如leetcode752 打开转盘锁 得到最小打开的次数

首先分析 共有4个拨轮, 每个拨轮每次可以向上或者向下拨动, 所以同一层共有 4 * 2 = 8 种变法

其他需要注意的地方, 还要我们注意 死亡数字的问题, 即到达死亡数字 不可继续行走.

代码如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值