租賃問題 Floyd演算法實現

2021-09-27 06:30:53 字數 932 閱讀 6475

今天在書上看到乙個問題,在乙個江邊,設定了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

print

(int i,

int j)

print

(i,parent[i]

[j])

;//站點k的左側站點

print

(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...