啊哈,算法自学记——9th
生活随笔
收集整理的這篇文章主要介紹了
啊哈,算法自学记——9th
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
最短路徑:
找出1號(hào)點(diǎn)到5號(hào)點(diǎn)的最短路徑(單向路線)
首先,5個(gè)點(diǎn)用個(gè)5*5的二維數(shù)組來(lái)存儲(chǔ)這個(gè)地圖
空格的值代表兩個(gè)點(diǎn)之間的距離,∞表示無(wú)法到達(dá),用999999來(lái)代替
運(yùn)行結(jié)果:
Floyd-Warshall
上圖中有4個(gè)城市8條公路,公路上的數(shù)字表示這條公路的長(zhǎng)短。請(qǐng)注意這些公路是單向的。我們現(xiàn)在需要求任意兩個(gè)城市之間的最短程,也就是求任意兩個(gè)點(diǎn)之間的最短路徑。這個(gè)問(wèn)題也被稱為“多源最短路徑”問(wèn)題。
#include <stdio.h>int main(int argc, char const *argv[]) {int e[10][10],m,n,t1,t2,t3;//讀入n與m,n代表頂點(diǎn)個(gè)數(shù),m代表路徑數(shù)量printf("Input the map:\r\n");scanf("%d %d",&n,&m);for(int i = 1;i <= n; i++){for (int j = 1; j <= m; j++){if(i==j)e[i][j]=0;elsee[i][j]=9999999;}}//讀入路徑for (int i = 0; i < m; i++){printf("Input the road and distance:\r\n");scanf("%d %d %d",&t1,&t2,&t3);e[t1][t2]=t3;}//Floyd-Warshall核心算法for (int k = 1; k <= n; k++){for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){if(e[i][j]>(e[i][k]+e[k][j])){e[i][j]=e[i][k]+e[k][j];}}}}//輸出結(jié)果for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){printf("%10d",e[i][j]);}printf("\r\n");}return 0; }運(yùn)行結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的啊哈,算法自学记——9th的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ChatGPT之父Sam Altman有
- 下一篇: Intro.js 分步向导插件使用方法