c HDOJ1053 哈夫曼樹的應用

2021-07-03 22:59:20 字數 547 閱讀 5490

題目大意:將一串字串用哈夫曼樹的方法壓縮,求壓縮前與壓縮後所佔空間與壓縮比例

這個題是資料結構中哈夫曼樹的應用,把每個字元出現的次數記錄下來,每次把最少的兩個合成乙個結點,並由此得到哈夫曼樹,然後對每個節點編碼,向左標0,向右標1,得到每個字母的編碼後計算空間即可。需要注意只有乙個字元的情況。

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

int sum1=0,sum2=0;

struct node;

node* make(node *a,node *b)

bool judge(node *a,node *b)

void dfs(node *a,int cur)

else

free(a);

}int main()

}if(sign==0)

} int n=vec.size()-1;

int ssign=1;

if(n==0) ssign=0;

for(int i=0;i

HDU 1053 Entropy 哈夫曼樹

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

HDOJ 1053 哈夫曼樹長度

題目 題意 每個編碼都有哈夫曼和ascall兩種。問該序列的哈夫曼長度和ascall長度以及比。因為只需要長度,可以用優秀佇列模仿建樹過程,不需要建樹。還有就是注意cout表達小數點後一位的方法。include define inf 1e18 define inf 1e9 define min a,...

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 ...