本文主要是介绍弗洛伊德算法 FLOD,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
int a[][] = { {0, 1000, 1000, 3, 5},{10, 0, 18, 1000,1000},{5, 1000, 0, 1000,1000},{1000,1000,2, 0, 1000},{1000,1000,2, 2, 0}};
1.举个小栗子:
由上面两张图可知:
a[1][3] 不可到达、a[1][0] = 10 、 a[0][3] = 3
满足 a[1][3] > a[1][0] + a[0][3]
因此更新 a[1][3] 的值为 a[1][0] + a[0][3]
2.代码实现:
public class FLOD {public static int[][] flod(int[][] a) {int n=a[0].length;int[][] c = a;for(int k=0;k<n;k++) {for(int i=0;i<n;i++) {for(int j=0;j<n;j++) {if(c[i][j]>c[i][k]+c[k][j]) {c[i][j]=c[i][k]+c[k][j];}}}}return c;}public static void main(String[] args) {int a[][] = {{0, 1000, 1000, 3, 5},{10, 0, 18, 1000,1000},{5, 1000, 0, 1000,1000},{1000,1000,2, 0, 1000},{1000,1000,2, 2, 0}};int c[][] = flod(a);for(int i=0;i<c.length;i++) {for(int j=0;j<c[0].length;j++) {System.out.print(c[i][j]+" ");}System.out.println();}}}
矩阵更新后 :
这篇关于弗洛伊德算法 FLOD的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!