SW练习_求最短距离_迪杰斯特拉

算法概要:从没有访问的点里,找到距离起点最近的点,然后更新该点到其相邻且未访问点的距离

1.找出距离最小的点s1 这块我其实有个疑问,如果be这个顶点和别的点都不连接,那么这块计算不下去了?

2.根据s1到它连接的每一个e1,如果 (开始节点->s1)+(s1->e1)<(开始节点->e1) 那么开始节点->e1需要更新一下

package info.frady.algo;

/**
 meng3.wei 2020.04.25
 //参考 https://www.jianshu.com/p/ff6db00ad866
 从0出发到0的最短距离为:0
 0-->0
 从0出发到1的最短距离为:3
 0-->3-->1
 从0出发到2的最短距离为:3
 0-->3-->2
 从0出发到3的最短距离为:2
 0-->3
 从0出发到4的最短距离为:6
 0-->3-->2-->4
 */
public class 迪杰斯特拉 {
    public static final int M = 1000000; // 代表正无穷
    public static int n;//顶点的个数
    public static int[] shortPathLen ; // 保存start到其他各点的最短路径
    public static boolean [] visited;
    public static int[] pid;

    public static void main(String[] args) {
        // 二维数组每一行分别是 A、B、C、D、E 各点到其余点的距离,
        // A -> A 距离为0, 常量M 为正无穷
        int[][] weight1 = {
                {0,4,M,2,M},
                {4,0,4,1,M
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值