日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

最短路径 floyd java_java实现Floyd算法求最短路径

發布時間:2025/3/12 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最短路径 floyd java_java实现Floyd算法求最短路径 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于無向圖的最短路徑問題:

這個程序輸出:最短路徑矩陣

例如:W[0][5]=9?代表vo->v5的最短路徑為9

W=:

0?1?3?7?4?9

1?0?2?6?3?8

3?2?0?4?1?6

7?6?4?0?3?2

4?3?1?3?0?5

9?8?6?2?5?0

package?com.xh.Floyd;

import?java.util.ArrayList;

public?class?Floyd_01?{

public?static?int?M?=?Integer.MAX_VALUE;

public?static?int?MAXSUM(int?a,int?b){

return?(a!=M&&b!=M)?(a+b):M;

}

public?static?ArrayList?flody(Integer[][]?dist){

Integer[][]?path=new?Integer[6][6];//存儲的是從i->j經過的最后一個節點

for?(int?i?=?0;?i?

for?(int?j?=?0;?j?

path[i][j]=i;

}

}

for(int?k=0;k<6;k++){

for?(int?i?=?0;?i?

for?(int?j?=?0;?j?

if(dist[i][j]>MAXSUM(dist[i][k],?dist[k][j])){

path[i][j]=path[k][j];//存儲的是從i->j經過的最后一個節點

dist[i][j]=MAXSUM(dist[i][k],?dist[k][j]);

}

}

}

}

ArrayList?list?=new?ArrayList();

list.add(dist);

list.add(path);

return?list;

}

public?static?Integer[]?reverse(Integer[]?chain,int?count){

int?temp;

for(int?i=0,j=count-1;i

temp=chain[i];

chain[i]=chain[j];

chain[j]=temp;

}

return?chain;

}

public?static?void?display_path(ArrayList?list){

Integer[][]?dist=list.get(0);

Integer[][]?path=list.get(1);

Integer[]?chain=new?Integer[6];

System.out.println("orign->dist"+"?dist?"+"?path");

for?(int?i?=?0;?i?<6;?i++)?{

for?(int?j?=?0;?j?

if(i!=j){//只是避免了vi->vi的輸出

//輸出源到目的地

System.out.print("\n???"+(i)+"->"+(j)+"?????");

//輸出最短路徑的長度

if(dist[i][j]==M){

System.out.print("?NA?");

}else{

System.out.print(dist[i][j]+"??????");

int?count=0;

int?k=j;

do?{

k=chain[count++]=path[i][k];

}?while?(i!=k);

chain=reverse(chain,count);

//輸出路徑

System.out.print(chain[0]+"");

for(k=1;k

System.out.print("->"+(chain[k]));

}

System.out.print("->"+j);

}

}

}

}

}

public?static?void?main(String[]?args)?{

Integer[][]?dist?=?{

{?0,?1,?4,?M,?M,?M?},

{?1,?0,?2,?7,?5,?M?},

{?4,?2,?0,?M,?1,?M?},

{?M,?7,?M,?0,?3,?2?},

{?M,?5,?1,?3,?0,?6?},

{?M,?M,?M,?2,?6,?0?}?};//?建立一個權值矩陣

ArrayList??list=flody(dist);

display_path(list);

}

}

總結

以上是生活随笔為你收集整理的最短路径 floyd java_java实现Floyd算法求最短路径的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。