
算法-BFS(C++实现)
文章平均质量分 88
BFS是一种按层级遍历树/图的算法,核心思想是由近及远逐层探索。
基本思想
从起点出发,先访问所有相邻节点
按层次扩展,使用队列管理待访问节点
适合找最短路径,如迷宫、社交网络关系
典型应用
无权图最短路径
社交网络好友推荐
二叉树层序遍历
状态空间搜索(如华容道
维维宝宝最可爱啦QWQ
WIT学生一枚
展开
-
BFS算法五连击:从入门到精通,解密Node结构体的千面应用
题目类型Node结构体成员设计要点核心作用多源同步扩散x, y最小信息原则坐标定位单源最短路径x, y, dist携带路径长度步数记录多源距离传播x, y, dist携带传播值距离计算数值传播x, y, val携带传播数值高度传递最优路径选择+ 排序携带评估值并支持优先队列智能路径选择核心启示按需定制:根据问题需求选择携带的附加信息算法适配:通过成员设计适配不同BFS变种(普通队列/优先队列)性能平衡:在信息携带量和计算效率之间寻找平衡点。原创 2025-04-15 18:25:13 · 769 阅读 · 0 评论 -
LeetCode 1631. 最小体力消耗路径 BFS-详细题解
我们需要找到一条从起点到终点的路径,使得路径中所有相邻格子的高度差的最大值最小。这个问题可以转化为一个最短路径问题的变种,但路径的“权重”不再累加,而是取路径中的最大值。路径的体力消耗由路径中相邻格子的高度差绝对值的最大值决定。要求找到一条路径,使得体力消耗值最小。:给定一个二维矩阵,找到一条从左上角到右下角的路径,使得路径中经过的格子的最小值最大。:当移动到相邻格子时,计算新的高度差,如果新的最大值比之前记录的更小,则更新路径。我们需要确保每次扩展的路径是当前已知的最优解(即最大高度差最小的路径)。原创 2025-04-11 20:31:19 · 1088 阅读 · 0 评论 -
第十届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组第五题——迷宫
/ 判断方向(dx[i] == 1代表行向下一格即代表字符'D'其他同理)要求找到从起点到终点的最短路径,若存在多个最短路径,需按字典序输出最小的路径。// 如果到达终点,记录路径。// 从起点 (0, 0) 开始。:每个节点保存从起点到当前坐标的路径字符串,到达终点时记录所有最短路径,最终取字典序最小的。:在遍历方向时,按字典序优先级(D→L→R→U)处理,确保最先找到的路径字典序最小。遍历方向时,生成对应字符(D/L/R/U)并检查合法性。原创 2025-04-01 22:12:31 · 1293 阅读 · 1 评论 -
蓝桥杯第十一届国赛B组第二题《扩散》解析 | BFS解法详解
本题通过 BFS 模拟扩散过程,结合坐标系平移和数组标记,高效解决了大范围扩散问题。关键点在于:坐标系平移处理负坐标。BFS 按层处理实现时间控制。标记数组避免重复计数。思考题的扩展方向可进一步加深对空间优化和几何计算的理解。原创 2025-04-03 19:20:11 · 889 阅读 · 0 评论 -
LeetCode 994. 腐烂的橘子 - BFS
由于腐烂过程类似于多源扩散,BFS 可以逐层处理腐烂橘子,每一层对应一分钟的扩散。// 当前层的腐烂橘子数量。每次处理队列中当前层的所有节点(即同一时间腐烂的橘子),检查四个方向是否有新鲜橘子。// 记录新鲜橘子的数量。// 初始化队列,加入所有腐烂的橘子,并统计新鲜橘子的数量。// 如果还有新鲜橘子,返回 -1;遍历整个网格,将所有初始腐烂的橘子加入队列,作为 BFS 的起点。若有新鲜橘子,将其腐烂并加入队列,同时减少新鲜橘子的计数。统计初始新鲜橘子的数量,若数量为 0,直接返回 0。原创 2025-04-01 23:08:51 · 913 阅读 · 0 评论