您好,登錄后才能下訂單哦!
本文實例為大家分享了Java實現Floyd算法求最短路徑的具體代碼,供大家參考,具體內容如下
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.Scanner; public class TestMainIO { /** * @param args * @throws FileNotFoundException */ public static void main(String[] args) throws FileNotFoundException { TestMainIO test_print = new TestMainIO(); int[][] G = test_print.intputGragh("D:\\Users\\test.txt" , 6); int[][] Dis = test_print.floyd(G, 6); test_print.printG(Dis, 6); } public void printG(int[][] G,int n){ for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ System.out.println(i+"->"+j+" "+G[i][j]); } } } public int[][] intputGragh(String path , int num) throws FileNotFoundException{ int[][] G = new int[num][num]; for(int i=0;i<num;i++){ for(int j=0;j<num;j++){ G[i][j]=999; } } Scanner in = new Scanner(new FileInputStream(path)); while (in.hasNext()) { int i = in.nextInt(); int j = in.nextInt(); int weight = in.nextInt(); G[i][j] = weight; } return G; } public int[][] floyd(int[][] G,int n){ int[][] Dis= new int[n][n]; for(int q=0;q<n;q++){ for(int w=0;w<n;w++){ Dis[q][w]=G[q][w]; } } for(int k = 0; k < n; k++){ for(int i=0; i < n; i++ ){ for(int j=0; j < n; j++){ if(Dis[i][j]>Dis[i][k]+Dis[k][j]){ Dis[i][j]=Dis[i][k]+Dis[k][j]; } } } } return Dis; } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。