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