日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1261:【例9.5】城市交通路网 《信息学奥赛一本通:动态规划基础》

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1261:【例9.5】城市交通路网 《信息学奥赛一本通:动态规划基础》 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://ybt.ssoier.cn:8088/problem_show.php?pid=1261

圖表示城市之間的交通路網,線段上的數字表示費用,

單向通行由A->E。
試用動態規劃的最優化原理求出A->E的最省費用。

【算法分析】逆推法
設f[i]表示點i到v10的最短路徑長度,則 f[10]=0
f[i]=min{ a[i][x]+f[x] 當a[i][x]>0 ,i<x<=n時}
?

#include<iostream> #include <bits/stdc++.h> using namespace std; #include<cstring> #include<cstdio> int main( ) {int n,i,j,x,f[100],c[100],a[100][100];memset(a,0,sizeof(a));memset(c,0,sizeof(c));cin>>n;//輸入各個城市之間距離for (i=1;i<=n;i++)for (j=1;j<=n;j++){cin>>a[i][j];}//初始化,默認每一個城市到達終點都是1000000for (i=1;i<=n;i++){f[i]=1000000;}f[n]=0;//從終點往前逆推,計算最短路徑for (i=n-1;i>=1;i--) for (x=i+1;x<=n;x++) //若f[x]=1000000表示城市x到終點城市不通 {if ((a[i][x]>0)&&(f[x]!=1000000)&&(f[i]>a[i][x]+f[x])){ //a[i][x]>0表示城市i和城市x通路f[i]=a[i][x]+f[x]; //城市i到終點最短路徑的值c[i]=x;} }cout<<"minlong="<<f[1]<<endl; //輸出最短路徑的值x=1;//輸出路過的各個城市while (x!=0) {cout<<x<<' ';x=c[x];} cout<<endl; }

?

總結

以上是生活随笔為你收集整理的1261:【例9.5】城市交通路网 《信息学奥赛一本通:动态规划基础》的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。