今天在書上看到乙個問題,在乙個江邊,設定了n個可以租賃船隻的站點,那麼如何才能讓遊客從出租站點1到站點n的費用最少呢?
其實這個問題就是典型的floyd演算法的運用,比較簡單:
站點 i 到站點 j 的最少花費,那麼就是尋找 i 到 j 的內部結點,使得 i 到 k,再 k 到 j 的花費小於直接 i 到 j 的花費即可。floyd演算法實現方法講解
注意:**實現
輸出結果#include
#define maxsize 1000
int map[maxsize]
[maxsize]
;//距離計算
int parent[maxsize]
[maxsize]
;//追蹤
void
rent
(int n)}}
}}void
(int i,
int j)
(i,parent[i]
[j])
;//站點k的左側站點
(parent[i]
[j],j)
;//站點k的右側站點
}int
main()
}rent
(n);
printf
("%d\n"
,map[1]
[n])
;//第乙個站點到最後站點的最少費用
printf
("1");
//從第乙個站點開始運動
print(1
,n);
return0;
}
floyd演算法MATLAB實現
floyd演算法,簡單的來說,就是算出n個點任意兩個點之間的最短距離,類似於三角形任意兩邊之和大於第三邊,畫了個圖,圖咋不好看,注意領會精神 然後就可以,算出從a到b的所有距離,留下最優的那一組 即最小的 儲存,同樣,a和c以及b和c之間的距離也可以輸出,最後就可以得到3x3的乙個矩陣 3個地點,主...
floyd演算法的matlab實現
2018.8.29 經過計算後得到的可行的演算法,可以算出任意兩點間的最短路程 function dist,path myfloyd a 尋找i,j兩點最短路徑 輸入 a 鄰接矩陣,元素 aij 是頂點i到j之間的直達距離,可以是有向的 sb 起點的標號 db 終點的標號 輸出 dist 最短路的距...
Floyd演算法實現 hdu 1690
floyd演算法實現 多源最短路徑o n 3 int d i j i到j的最路徑 int path i j i到j的最短路徑上j的前乙個頂點序號 初始化 for int i 1 i n i else path i j 1 無路 遞推 for int k 1 k n k for int i 1 i n...