hdu1053(哈夫曼編碼)

2021-09-28 06:35:34 字數 450 閱讀 6805

題意是,給出一排字串,要求求出字元的8位編碼的長度,哈夫曼編碼值,以及之間的比值

因為僅僅只要求求出哈夫曼編碼值,所以不用建立哈夫曼樹,可以建立優先佇列,只要將每次最小的

出隊的兩個元素合成乙個新的大數,然後放進優先佇列中,直到只剩下乙個元素為止,那個元素就是哈夫曼編碼值。

注意只有一種字元的情況

ac**:

#include#include#include#include#includeusing namespace std;

int main()

int sum=0;

while(q.size()>1)

if(sum==0)

printf("%d %d %.1lf\n",l*8,sum,(l*8.0)/(sum*1.0));

} return 0;

}

hdu1053哈夫曼樹的妙用

acm小菜鳥的日常更新啊 題目鏈結 題目比較長,大致意思是說乙個英文本母佔四個位元組,乙個二進位制數佔乙個位元組,讓你求如果乙個字串用哈夫曼樹表示所需的位元組數。sample input aaaaabcd the cat in the hat endsample output 64 13 4.9 1...

HDU 1053 Entropy 哈夫曼樹

題意 根據哈夫曼編碼原則壓縮乙個字串,問壓縮後的大小和壓縮比。思路 就是寫一棵哈夫曼樹。ps 第一次寫哈夫曼樹,寫得好醜 problem hdu 1053 author nmfloat include include include include include include include i...

HDU1053 Entropy 哈夫曼樹

認真讀題,別怕題長,此題考查的就是哈夫曼樹並求出最小編碼值,注意每一次要將陣列清0,否則會出錯!ac include include using namespace std define m 1000000 struct node ha 100 int main int k 0 for i 0 i ...