当前位置: 移动技术网 > IT编程>开发语言>Java > Java实现Floyd算法求最短路径

Java实现Floyd算法求最短路径

2019年07月19日  | 移动技术网IT编程  | 我要评论

本文实例为大家分享了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; 
 } 
} 

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网