欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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; 
 } 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:

下一篇: