2025年广度优先搜索序列怎么做(广度优先搜索序列怎么做的)

广度优先搜索序列怎么做(广度优先搜索序列怎么做的)p id main toc strong 目录 strong p 一 通过迷宫问题总结广度优先搜索算法 1 广度优先搜索的一般过程 2 广度优先搜索的特点 二 例题分析 1 员工的重要性 2 N 叉树的层序遍历 3 腐烂的橘子 4 单词接龙 5 最小基因变化 6 打开转盘锁 假设有一个迷宫 用二维矩阵表示

大家好,我是讯享网,很高兴认识大家。



 <p id="main-toc"><strong>目录</strong></p> 

讯享网

一、通过迷宫问题总结广度优先搜索算法

1、广度优先搜索的一般过程

2、广度优先搜索的特点

二、例题分析

1、员工的重要性

2、N叉树的层序遍历

3、腐烂的橘子


讯享网

4、单词接龙

5、最小基因变化

6、打开转盘锁


假设有一个迷宫,用二维矩阵表示,矩阵中标记为0的地方表示可以通过,标记为1的地方表示有障碍物不能通过。现在给定迷宫大小为10*10,入口位置在(1,1)位置出口在(8,10)位置,判断从入口进来,是否可以走出迷宫,每次可以任意方向走。

尝试深度优先搜索是否可以解决:

  • 从入口进来,朝着一个方向走到尽头。
  • 如果没有找到出口,则折返换一个方向继续。
  • 直到找到出口或者所有方向都尝试完也没找到出口结束。
讯享网

广度优先该如何解决这个问题呢?

  • 深度优先搜索是指一条路走到黑,没有成功找另一条路,成功直接返回。
  • 广度优先搜索,顾名思义先判断该节点的四个方向,如果有一个是出口,则找到了。
  • 否则,在从这四个方向分别出发,判断它们的四个方向是否有出口
 

观察上面两种方法,它们有什么区别?

1、广度优先搜索的一般过程

讯享网

2、广度优先搜索的特点

  • 通过上面一个题,可以看出深度优先搜索是在探寻一跳路径
  • 广度优先搜索是找到所有路径
  • 因此,广度优先搜索一定可以寻找最优解。而深度优先搜索找到的不一定是最优解。
  • 广度优先搜索一般使用循环+队列进行搜索

1、员工的重要性

思路:将一个员工的所有直系下属的重要性之和计算完,在计算它们的下属的下属。即,定义一个队里用广度优先搜索的思路进行计算,首先将id元素找到并入队,队头元素出队前先将其直系下属带入队列。

 

2、N叉树的层序遍历

思路:层序遍历,需要注意的是这里要求一层一层的输出。因此,层序遍历时还要记录当前层节点的个数和下一层的节点个数。

讯享网

3、腐烂的橘子

这个题需要注意的是,刚开始可能就有多个橘子腐烂,所以开始时队列中可能会有多个节点。同时,每个节点带入的新节点的num应该是在该节点的基础上+1的。还有一点就是,如果没有橘子输出的结果是0.

 

4、单词接龙

思路:为了查找快速,建立unorder_map将字符串序列保存,并且记录该字符串是否访问过。用26个英文小写字符替换单词中的每一个字母,并且查找替换后会不会出现序列中相同的单词,如果出现则保存在队列中。直到找到endWord

讯享网

5、最小基因变化

注意:和上一个题是同类型,思路完全相同

 

6、打开转盘锁

思路:对锁中的每一个+1或-1,并将结构保存在set中用于下次判断是否已经使用过。对队列进行遍历,直到找到target.需要注意的是,存在两种特殊情况“0000”就是死锁或者是target,因此需要对这两种情况进行单独判断。

讯享网

 

小讯
上一篇 2025-05-25 19:12
下一篇 2025-04-13 23:52

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/144112.html