一、我们先画一个可达路径图表:
-1表示不可直达,0表示自己,其他整数表示长度或者权重
| A | B | C | D | |
| A | 0 | 1 | 2 | -1 |
| B | -1 | 0 | 1 | 5 |
| C | -1 | -1 | 0 | 1 |
| D | -1 | -1 | -1 | 0 |
用图形可表示为:

二、算法思路
1、先列出所有保存所有节点到可达节点的路径二维表
2、逐步寻找从起始节点到下一步节点的最短路径,直到找到终节点。
三、代码实现
1、建立一个二维表:int[][]
2、建立一个最短路径对象和未结束的路径集合。
比如A到D的最短路径
①先从A找到下一个节点的路径和路径值,如果未到终点路径,保存该路径到set中
②循环遍历set,找到每个节点的下一个或几个节点。如果有到终点的,计算最短路径值,如
果是最短路径,同时保存到最短路径对象;如果没有到终点,则删除原来节点,保存新路径到set;
③再次执行②,如果没有新节点,则删除未到最终节点的路径,保留最新可达路径;
④输出最短路径
本文介绍了一种求解可达路径图表中最短路径的算法。首先绘制了图表,然后详细阐述了算法思路,包括列出所有节点的路径表、逐步寻找最短路径并更新。接着给出了代码实现步骤,涉及二维表的建立、最短路径对象和未结束路径集合的操作。该算法用于找到从起点到终点的最优路径。

411

被折叠的 条评论
为什么被折叠?



