国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【程序員必會十大算法】之弗洛伊德算法

JellyBool / 1207人閱讀

摘要:學習資料迪杰斯特拉計算的是單源最短路徑,而弗洛伊德計算的是多源最短路徑代碼不能設置為,否則兩個相加會溢出導致出現負權創建頂點和邊

學習資料

迪杰斯特拉計算的是單源最短路徑,而弗洛伊德計算的是多源最短路徑

代碼

public class Main {    //不能設置為Integer.MAX_VALUE,否則兩個Integer.MAX_VALUE相加會溢出導致出現負權    public static int MaxValue = 10000;    public static int[][] path;    public static void main(String[] args) {        //創建頂點和邊        char[] data = {"A","B","C","D","E","F","G"};        int[][] matrix = {                {10000,5,7,10000,10000,10000,2},                {5,10000,10000,9,10000, 10000,3},                {7,10000,10000,10000,8,10000,10000},                {10000,9,10000,10000,10000,4,10000},                {10000,10000,8,10006,10000,5,4},                {10000,10000,10000,4,5,10000,6},                {2,3,10000,10000,4,6,10000}};        //初始化路徑數組        path = new int[matrix.length][matrix.length];        floyd(matrix);    }    //非遞歸實現    public static void floyd(int[][] matrix) {        for (int i = 0; i < matrix.length; i++) {            for (int j = 0; j < matrix.length; j++) {                path[i][j] = -1;            }        }        for (int m = 0; m < matrix.length; m++) {            for (int i = 0; i < matrix.length; i++) {                for (int j = 0; j < matrix.length; j++) {                    if (matrix[i][m] + matrix[m][j] < matrix[i][j]) {                        matrix[i][j] = matrix[i][m] + matrix[m][j];                        //記錄經由哪個點到達                        path[i][j] = m;                    }                }            }        }        for (int i = 0; i < matrix.length; i++) {            for (int j = 0; j < matrix.length; j++) {                if (i != j) {                    if (matrix[i][j] == MaxValue) {                        System.out.println(i + "到" + j + "不可達");                    } else {                        System.out.print(i + "到" + j + "的最短路徑長度是:" + matrix[i][j]);                        System.out.print("最短路徑為:" + i + "->");                        findPath(i, j);                        System.out.println(j);                    }                }            }        }    }    //遞歸尋找路徑    public static void findPath(int i, int j) {        int m = path[i][j];        if (m == -1) {            return;        }        findPath(i, m);        System.out.print(m + "->");        findPath(m, j);    }}

結果

01的最短路徑長度是:5最短路徑為:0->102的最短路徑長度是:7最短路徑為:0->203的最短路徑長度是:12最短路徑為:0->6->5->304的最短路徑長度是:6最短路徑為:0->6->405的最短路徑長度是:8最短路徑為:0->6->506的最短路徑長度是:2最短路徑為:0->610的最短路徑長度是:5最短路徑為:1->012的最短路徑長度是:12最短路徑為:1->0->213的最短路徑長度是:9最短路徑為:1->314的最短路徑長度是:7最短路徑為:1->6->415的最短路徑長度是:9最短路徑為:1->6->516的最短路徑長度是:3最短路徑為:1->620的最短路徑長度是:7最短路徑為:2->021的最短路徑長度是:12最短路徑為:2->0->123的最短路徑長度是:17最短路徑為:2->4->5->324的最短路徑長度是:8最短路徑為:2->425的最短路徑長度是:13最短路徑為:2->4->526的最短路徑長度是:9最短路徑為:2->0->630的最短路徑長度是:12最短路徑為:3->5->6->031的最短路徑長度是:9最短路徑為:3->132的最短路徑長度是:17最短路徑為:3->5->4->234的最短路徑長度是:9最短路徑為:3->5->435的最短路徑長度是:4最短路徑為:3->536的最短路徑長度是:10最短路徑為:3->5->640的最短路徑長度是:6最短路徑為:4->6->041的最短路徑長度是:7最短路徑為:4->6->142的最短路徑長度是:8最短路徑為:4->243的最短路徑長度是:9最短路徑為:4->5->345的最短路徑長度是:5最短路徑為:4->546的最短路徑長度是:4最短路徑為:4->650的最短路徑長度是:8最短路徑為:5->6->051的最短路徑長度是:9最短路徑為:5->6->152的最短路徑長度是:13最短路徑為:5->4->253的最短路徑長度是:4最短路徑為:5->354的最短路徑長度是:5最短路徑為:5->456的最短路徑長度是:6最短路徑為:5->660的最短路徑長度是:2最短路徑為:6->061的最短路徑長度是:3最短路徑為:6->162的最短路徑長度是:9最短路徑為:6->0->263的最短路徑長度是:10最短路徑為:6->5->364的最短路徑長度是:4最短路徑為:6->465的最短路徑長度是:6最短路徑為:6->5

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/121661.html

相關文章

  • 序員必會十大算法分治算法(漢諾塔問題)

    摘要:應用分治法是一種很重要的算法。字面上的解釋是分而治之,就是把一個復雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題直到最后子問題可以簡單的直接求解,原問題的解即子問題的解的合并。 ...

    codecraft 評論0 收藏0
  • 序員必會十大算法Prim算法

    摘要:問題勝利鄉有個村莊現在需要修路把個村莊連通各個村莊的距離用邊線表示權比如距離公里問如何修路保證各個村莊都能連通并且總的修建公路總里程最短代碼重點理解中的三層循環 問...

    番茄西紅柿 評論0 收藏2637
  • 序員必會十大算法二分查找算法

    摘要:遞歸實現不考慮相同數二分查找,不考慮有相同數的情況遞歸找到了考慮有相同數二分查找考慮有相同元素的情況遞歸要查找的值 1.遞歸實現 ①不考慮相同數 /** * 二分查...

    YFan 評論0 收藏0
  • 序員必會十大算法貪心算法

    摘要:例題假設存在如下表的需要付費的廣播臺,以及廣播臺信號可以覆蓋的地區。 例題 假設存在如下表的需要付費的廣播臺,以及廣播臺信號可以覆蓋的地區。如何選擇最少的廣播臺,讓...

    macg0406 評論0 收藏0
  • 序員必會十大算法騎士周游問題

    摘要:騎士周游問題又叫馬踏棋盤問題未優化前沒有策略定義棋盤的行數和列數定義棋盤上的某個點是否被訪問過記錄是否周游結束從第一行第一列開始走,第一次走算第一步,即展示下是棋盤, ...

    Baoyuan 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<