HDU1053 Entropy 哈夫曼樹

2022-07-12 19:33:11 字數 818 閱讀 6359

認真讀題,別怕題長,此題考查的就是哈夫曼樹並求出最小編碼值,注意每一次要將陣列清0,否則會出錯!

ac**:

#include#include

using

namespace

std;

#define m 1000000

struct

node

ha[100

];int

main()

int k=0

;

for(i=0;i<30;i++)

//構造哈夫曼樹

memset(ha,0,sizeof

(ha));

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

ha[i].data=b[i];

for(i=1;i//

控制掃瞄的次數

else

if(ha[j].data0

)

}ha[k+i].data=ha[x1].data+ha[x2].data;

ha[k+i].l=x1;

ha[k+i].r=x2;

ha[x1].p=k+i;

ha[x2].p=k+i;

}if(k==1)//

當只有一種字元的時候

s1=b[1]*1

;

else

s1+=b[i]*x;}}

printf(

"%d %d %.1lf\n

",l*8,s1,l*8*1.0/s1);

}return0;

}

HDU 1053 Entropy 哈夫曼樹

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

Hdu 1053 Entropy查出錯(修改)

pragma warning disable 4786 include include include includeusing namespace std struct node int findminindex vector ht,int n for i n 1 i m i return ht ...

hdu1053(哈夫曼編碼)

題意是,給出一排字串,要求求出字元的8位編碼的長度,哈夫曼編碼值,以及之間的比值 因為僅僅只要求求出哈夫曼編碼值,所以不用建立哈夫曼樹,可以建立優先佇列,只要將每次最小的 出隊的兩個元素合成乙個新的大數,然後放進優先佇列中,直到只剩下乙個元素為止,那個元素就是哈夫曼編碼值。注意只有一種字元的情況 a...