弗洛伊德算法怎么理解_弗洛伊德算法思想

弗洛伊德算法怎么理解_弗洛伊德算法思想这个方法中,其中每一个顶点到另一个顶点最多就是两步。所以就是找到两个顶点的最近距离packagea;importjava.lang.reflect.Array;importjava.util.Arrays;publicclassFloydDemo{publicstaticvoidmain(String[]args){char[]di…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

这个方法中,其中每一个顶点到另一个顶点最多就是两步。
所以就是找到两个顶点的最近距离

package a;

import java.lang.reflect.Array;
import java.util.Arrays;

public class FloydDemo { 
   
    public static void main(String[] args) { 
   
        char[] diots = { 
   'A', 'B', 'C', 'D', 'E', 'F', 'G'};
        int[][] edges = new int[diots.length][diots.length];
        final int N = 65535;

        edges[0]=new int[]{ 
   0,5,7,N,N,N,2};//注意这个自身到自身的距离是0 ,并不是N 和地杰斯特拉的区别
        edges[1]=new int[]{ 
   5,0,N,9,N,N,3};
        edges[2]=new int[]{ 
   7,N,0,N,8,N,N};
        edges[3]=new int[]{ 
   N,9,N,0,N,4,N};
        edges[4]=new int[]{ 
   N,N,8,N,0,5,4};
        edges[5]=new int[]{ 
   N,N,N,4,5,0,6};
        edges[6]=new int[]{ 
   2,3,N,N,4,6,0};

        FGraph fGraph = new FGraph(diots, edges, diots.length);
        fGraph.floyd();
        fGraph.show();
    }
}

class FGraph{ 
   
    char [] data;
    int [] [] dis;
    int [][] pre;

    public FGraph(char[] data, int[][] dis, int len) { 
   
        this.data = data;
        this.dis = dis;
        pre = new int[len][len];
        for (int i = 0; i < data.length; i++) { 
   

            Arrays.fill(pre[i],i);//每个顶点的前驱节点默认值是自身的下标。和地杰斯特拉不一样,地杰斯特拉默认不初始化。
        }
    }


    public void show(){ 
   
        for (int i = 0; i < data.length; i++) { 
   
            for (int j = 0; j < data.length; j++) { 
   
                System.out.print(data[pre[i][j]]+"\t");
            }
            System.out.println();
            for (int j = 0; j < data.length; j++) { 
   
                System.out.print("("+data[i]+"-->"+data[j]+":"+dis[i][j]+"|\t");
            }
            System.out.println();
        }

    }

    public void floyd(){ 
   
        int len =0;//变量保存距离
        for (int i = 0; i < data.length; i++) { 
   //中间
            for (int j = 0; j < data.length; j++) { 
   //起点
                for (int k = 0; k < data.length; k++) { 
   //终点
                    len = dis[j][i]+dis[i][k];
                    if (len < dis[j][k]) { 
   
                        dis[j][k] = len;
                        pre[j][k] = pre[i][k];//这个是更新前一个顶点。在初始化的时候pre 的每一行都是 自身。所以,这个第一次是自身。然后变成了中间的这个点。
                    }
                }
            }
        }

    }

}



Jetbrains全家桶1年46,售后保障稳定

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203585.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【C++学习五】STL库的应用

    【C++学习五】STL库的应用文章目录初识C++之STL标准库1.C++STL的三大核心组件2.自定义函数与算法对容器实现操作3.基于自定义函数以及操作模板实现简易数字图像处理3.1图像灰度变换3.2图像二值化4.初识STL容器之:set集合5.初识STL容器之:map(关联容器)结语初识C++之STL标准库STL是StandardTemplateLibrary的缩写,中文译为“标准模板库”。STL是C++标准库的一部分。我们之前已经基本了解了C++中的模板templet,以及模板的作用。可以说,C

    2022年10月15日
  • 从员工到总监:我所学到的,非常多人花十年也学不到[通俗易懂]

    从员工到总监:我所学到的,非常多人花十年也学不到

    2022年2月4日
  • python3 安装selenium和谷歌浏览器驱动

    python3 安装selenium和谷歌浏览器驱动1、安装浏览器驱动谷歌浏览器驱动下载地址:https://chromedriver.storage.proxy.ustclug.org/index.html需要翻墙。选择和自己浏览器版本一致的版本,下载之后解压得到一个chromedriver.exe文件,放在python安装目录下,也就是和python.exe放在一起。2、安装selenium:执行pip3installselenium即可。3、测试代码fromseleniumimportwebdriverdriver=we

    2022年6月1日
  • 快递查询 接口_查询快递接口

    快递查询 接口_查询快递接口•快递物流查询API接口快递查询接口是指快递查询网对外开放的应用程序接口,开发人员能够通过调用该接口与快递查询网进行交互,并基于该接口开发自己的快递查询应用程序。•应用场景① 买家物流查询:轨迹跟踪、包裹进度、预计送达时间、派送人联系方式等。② 卖家物流跟踪:是否超区、转件、多次派送、拒收③ 平台监控管理:假交易监控、匹配卖家发货与顾客确认收货时间。目前常用的快递物流查询接口供应平…

    2022年10月30日
  • wp和uwp_uwp wpf

    wp和uwp_uwp wpf一、异步调用之后,要更新UI时,代码如下二、原来的ApplicationBar更改为CommandBar三、原来在wp8.1中状态栏StatusBar类在UWP中也发生了改变现在要控制UWP状态

    2022年8月5日
  • mysql jdbc下载(mysql下载哪个版本)

    https://dev.mysql.com/downloads/connector/j/

    2022年4月16日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号