1270: 基礎練習 huffuman樹
時間限制: 1 sec 記憶體限制: 512 mb [
提交][
狀態][
討論版]
huffman樹在編碼中有著廣泛的應用。在這裡,我們只關心huffman樹的構造過程。
給出一列數=,用這列數構造huffman樹的過程如下:
1. 找到中最小的兩個數,設為pa
和pb,將pa
和pb從中刪除掉,然後將它們的和加入到中。這個過程的費用記為pa
+pb。2. 重複步驟1,直到中只剩下乙個數。
在上面的操作過程中,把所有的費用相加,就得到了構造huffman樹的總費用。
本題任務:對於給定的乙個數列,現在請你求出用該數列構造huffman樹的總費用。
例如,對於數列=,huffman樹的構造過程如下:
1. 找到中最小的兩個數,分別是2和3,從中刪除它們並將和5加入,得到,費用為5。
2. 找到中最小的兩個數,分別是5和5,從中刪除它們並將和10加入,得到,費用為10。
3. 找到中最小的兩個數,分別是8和9,從中刪除它們並將和17加入,得到,費用為17。
4. 找到中最小的兩個數,分別是10和17,從中刪除它們並將和27加入,得到,費用為27。
5. 現在,數列中只剩下乙個數27,構造過程結束,總費用為5+10+17+27=59。
輸入的第一行包含乙個正整數n(n
<=100)。
接下來是n個正整數,表示p
0, p
1, …, pn
-1,每個數不超過1000。
輸出用這些數構造huffman樹的總費用。
樣例輸入55 3 8 2 9
樣例輸出59
#includeint count=0;
int huffman(int arr,int start,int end)
for(i=start;i
練習題 基礎練習
第一題 需求 1 計算 5 個月的生活大概開銷 spending 比如 rent 房租 800.00 mealcost 吃飯 900.00 clothingcosts 買衣服 300.00 othercosts 其他費用 300.00 public class dome1 第二題 需求 2 計算 1...
Python基礎練習
1.python 為什麼不需要變數名和變數型別宣告?python語言中物件的型別和記憶體都是執行時確定的。在建立也就是賦值時,直譯器會根據語法和右側的運算元來決定新物件的型別。2.python 為什麼不需要宣告函式型別?待補充3.python 為什麼應當避免在變數名的開始和結尾使用雙下劃線?合法識別...
c 基礎練習
問題 f 土豪學長算成績 題目描述 給協會裡的同學排成績對於土豪學長來說總是乙個很麻煩的事情,因為土豪學長不會使用excel 所以每次他都是手工排序的。現在協會的人數越來越多,手工排序變的不現實了,他希望你能夠幫他寫乙個程式給同學們拍名次。考試的科目有語文,數學,英語,物理,化學,生物。首先按照總分...