哈夫曼樹 計算最小WPL

2021-10-03 21:19:02 字數 637 閱讀 4909

哈夫曼樹,第一行輸入乙個數n,表示葉結點的個數。需要用這些葉結點生成哈夫曼樹,根據哈夫曼樹的概念,這些結點有權值,即weight,題目需要輸出所有結點的值與權值的乘積之和。

輸入有多組資料。

每組第一行輸入乙個數n,接著輸入n個葉節點(葉節點權值不超過100,2<=n<=1000)。

輸出權值。
示例1

複製

5  

1 2 2 5 9

複製

37
#include #include #include using namespace std;

// 只有這樣,top出來的才不是max,而是min。不知道為什麼

//背過! vectorgreatervg vg vg vg vg vg vg

priority_queue,greater> pq;

int main()

int t;

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

int weight = 0;

while(pq.size() != 1)

cout << weight << endl;

pq.pop();

}}

搬水果 計算哈夫曼樹最小WPL

在乙個果園裡,小明已經將所有的水果打了下來,並按水果的不同種類分成了若干堆,小明決定把所有的水果合成一堆。每一次合併,小明可以把兩堆水果合併到一起,消耗的體力等於兩堆水果的重量之和。當然經過 n 1 次合併之後,就變成一堆了。小明在合併水果時總共消耗的體力等於每次合併所耗體力之和。假定每個水果重量都...

哈夫曼樹及WPL計算的一種實現

主要思路寫在注釋裡了,用了兩個陣列,乙個作為堆,乙個作為儲存最後樹狀結構位址的陣列。我自己感覺可能有點複雜了,下次可以試試用結構體而不是二維陣列來實現同樣的功能。使用code block 17.12編譯 include include typedef struct haffmantreehaff t...

哈夫曼編碼 哈夫曼樹

1.定義 哈夫曼編碼主要用於資料壓縮。哈夫曼編碼是一種可變長編碼。該編碼將出現頻率高的字元,使用短編碼 將出現頻率低的字元,使用長編碼。變長編碼的主要問題是,必須實現非字首編碼,即在乙個字符集中,任何乙個字元的編碼都不是另乙個字元編碼的字首。如 0 10就是非字首編碼,而0 01不是非字首編碼。2....