Java实现Floyd算法求最短路径
程序员文章站
2023-12-17 16:34:52
本文实例为大家分享了java实现floyd算法求最短路径的具体代码,供大家参考,具体内容如下
import java.io.fileinputstream;...
本文实例为大家分享了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; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。