C++程序 矩阵或网格中两个单元格之间的最短距离
给定一个N*M阶矩阵。查找从源单元格到目标单元格的最短距离,只遍历有限的单元格。另外,您只能向上,向下,向左和向右移动。如果找到则输出距离,否则输出-1。
s表示“源”
d表示’目的地’
*表示可以移动的单元格
0表示无法移动的单元格
这个问题只针对单个源和目的地。
示例:
思路是在矩阵单元格上进行BFS(广度优先搜索)。请注意,如果图是无权重的,则我们可以始终使用BFS查找最短路径。
- 将每个单元格作为具有其行、列值和与源单元格的距离的节点存储。
- 从源单元格开始BFS。
- 创建一个visited数组,所有数组都具有“假”值,除了无法遍历的“0”单元格,这些单元格被分配了“true”值。
- 在每个移动中更新从源值的距离。
- 当达到目标时返回距离,否则返回-1(源和目标之间不存在路径)。
输出: