資料結構與演算法實驗題7 2 連環計

2021-09-06 12:59:57 字數 1467 閱讀 4463

問題描述:

赤壁之戰前夕,龐統向周瑜獻連環計,瑜設計使蔣幹邀龐統到曹營。操與統同觀營寨,

又共論兵法。統對答如流使操敬服。統乘機提出:大江中風浪不息使北兵易生疾病。可將大

小船配搭,首尾用鐵環連鎖,鋪闊板以便人馬行走。操聞之大喜,派人連夜打造連環大釘,

鎖住船隻。

每打造一單位長度的鐵索要花費一單位的錢,曹操希望用最少的花費將n 艘戰船連線起

來(任意兩艘戰船直接或間接被鐵索連線),每艘戰船可以看成乙個點,座標為(xi,yi),曹

營中有一位神秘人物,他所在的戰船必須和曹操所在戰船直接連線,求最小花費。

資料輸入:

第一行戰船數n(2<=n<=100)。

第二行神秘人物所在的戰船序號a,曹操所在戰船序號b,(1<=a,b<=n,a!=b),戰船序號

從1 到n。

接下來n 行,每行兩個實數(建議定義成double 型別):xi,yi(-1000<=xi,yi<=1000),表

示序號為i 的戰船的座標。

結果輸出:

連線n 艘戰船的最小花費,輸出答案的時候四捨五入保留兩位小數。

輸入示例: 輸出示例:

42 3

0 01 0

0 -1

1 -1

3.14

根據prim演算法思想,把已經建成的道路初始化為0就ok了

1

2 #include3 #include

4 #include5

double g[101][101];6

double ans=0;7

double func(double a,double b,double x,doubley)8

12void prim(int

n)13

32 used[j]=1

;33 ans+=g[j][closet[j]];

34for(k=2;k<=n;k++)

3541}42

}43}44

intmain()

4556

for(i=1;i<=n;i++)

57for(j=1;j<=n;j++)

58 g[i][j]=12345678.0;59

for(i=1;i<=n;i++)

6067

else

68 g[i][j]=0;69

}70}71

double k1=func(t[a][0],t[a][1],t[b][0],t[b][1

]);72 g[a][b]=g[b][a]=0.0;73

74prim(n);

75 printf("

%.2lf\n

",ans+k1);

76return0;

77}7879

view code

資料結構與演算法實驗題7 2 連環計

問題描述 赤壁之戰前夕,龐統向周瑜獻連環計,瑜設計使蔣幹邀龐統到曹營。操與統同觀營寨,又共論兵法。統對答如流使操敬服。統乘機提出 大江中風浪不息使北兵易生疾病。可將大 小船配搭,首尾用鐵環連鎖,鋪闊板以便人馬行走。操聞之大喜,派人連夜打造連環大釘,鎖住船隻。每打造一單位長度的鐵索要花費一單位的錢,曹...

演算法與資料結構實驗題1 9

實驗任務 上回說到,你奔走於各個世界線拯救靜靜。現在,完成任務的你決定玩個簡單的遊戲靜一靜。我們知道,數字在計算機裡是用二進位制儲存的,現在你想知道如果把乙個數字的二進位制倒過來是多少。比如 int a 5,用二進位制表示就是00000000000000000000000000000101。把它倒過...

演算法與資料結構實驗題 3 1 火車

實驗任務 tonyy 等火車無聊的時候,會去觀察火車的排列,有一天他思考這麼乙個問 題,火車總站的火車只能進站,要出站的話只能先出最後進站的那輛車,那麼知 道火車的進站順序,能不能把它的出站順序調整成火車站想要的呢?資料輸入 輸入第一行為乙個正整數 n 表示火車輛數 編號 1 n 1 n 9 然後為...