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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

导游的魔棒

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 导游的魔棒 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

小C“五一”節參加了五星旅行社組織的一次外出旅游,這次旅游中,小C遇到一件非常有趣的事: 五星旅行社的導游小張有一根魔棒,這根魔棒在每一次的旅游中可以產生一次魔力(也只能產生一次魔力),這魔力可以使兩個景點間的距離減成原來的一半。小C在“五一”節的這次旅游中,很有幸是小張導游作為他們的導游,小張當然也沒有忘記帶他的魔棒,因為他可以發揮魔棒的作用,使路程減少呢。這次旅游中,去了一個有N個景點的旅游區,這個旅游區只有一個入口,在景點編號為1的地方,一個出口,在景點編號為N的地方,景點編號為1,2,3,…,N。在入口處有一個N×N的數據陣,描述了景點間的距離,a[I,j]表示景點i到景點j的距離。因為小C的公司有急事要小C盡快回來,現在小C要用張導游的魔棒,使得從入口到出口的距離最短。現在我們也來編一個程序:求將哪一條邊減半后使從頂點1到頂點N的最短路徑長度最短,輸出這個最短距離,如果找不到從1到N的路徑,則輸出 -1 。

Input

從文件中c.in讀入數據,文件第一行是一個正整數N(3 ≤ N ≤ 50),表示共有N個點,接下來是一個N行N列的數據陣,a[I,j]的值表示頂點i到頂點j的長度。

Output

只有一個數就是將一條邊長減半后的從1到N的最短路徑長度,結果四舍五入到小數后兩位,如果找不到從1到N的路徑,則輸出 -1 。

Sample Input

3
0 5 20
5 0 8
20 8 0
Sample Output

9.00

.
.
.
.
.
分析
a[i][j][0/1]表示i走到j 沒用/用了 將邊減半的最短距離
然后floyd

.
.
.
.
.
程序:

#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std;int n; double a[100][100][2];int main() {freopen("c.in","r",stdin);freopen("c.out","w",stdout);scanf("%d",&n);for (int i=1;i<=n;i++)for (int j=1;j<=n;j++){double x;scanf("%lf",&x);if (x==0) a[i][j][0]=a[i][j][1]=2147483647; else {a[i][j][0]=x;a[i][j][1]=x/2;}}for (int k=1;k<=n;k++)for (int i=1;i<=n;i++)for (int j=1;j<=n;j++){a[i][j][0]=min(a[i][j][0],a[i][k][0]+a[k][j][0]);a[i][j][1]=min(a[i][j][1],a[i][k][1]+a[k][j][0]);a[i][j][1]=min(a[i][j][1],a[i][k][0]+a[k][j][1]);}if (a[1][n][1]!=2147483647) printf("%0.2lf",a[1][n][1]); else printf("-1");fclose(stdin);fclose(stdout);return 0; }

轉載于:https://www.cnblogs.com/YYC-0304/p/11094914.html

總結

以上是生活随笔為你收集整理的导游的魔棒的全部內容,希望文章能夠幫你解決所遇到的問題。

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