資料結構實驗之二叉樹六 哈夫曼編碼

2021-07-16 13:51:10 字數 1224 閱讀 6742

time limit: 1000ms memory limit: 65536k

字元的編碼方式有多種,除了大家熟悉的ascii

編碼,哈夫曼編碼

(huffman coding)

也是一種編碼方式,它是可變字長編碼。該方法完全依據字元出現概率來構造出平均長度最短的編碼,稱之為最優編碼。哈夫曼編碼常被用於資料檔案壓縮中,其壓縮率通常在

20%~

90%之間。你的任務是對從鍵盤輸入的乙個字串求出它的

ascii

編碼長度和哈夫曼編碼長度的比值。

輸入資料有多組,每組資料一行,表示要編碼的字串。

對應字元的

ascii

編碼長度la,

huffman

編碼長度lh和

la/lh的值(

保留一位小數

),資料之間以空格間隔。

aaaaabcd

the_cat_in_the_hat

64 13 4.9

144 51 2.8

陣列模擬

#include #include #include #include using namespace std;

char c[1000000];

char d[1000000];//儲存不重複的字串

int a[1000000]; //統計相同字元個數

int b[1000000];

int k;

int cmp ( const void *a , const void *b ) //降序排列

void weight(char c)//求每個字元的權值

int s = 0;

for(i=0; i優先佇列

#include #include #include #include #include using namespace std;

int main()

{ priority_queue, greater>q;//優先佇列

//公升序

int n, i, num, a, b, sum;

char c[1010];

int v[1010];

while(~scanf("%s", c))

{sum = 0;

memset(v, 0, sizeof(v));

int n = strlen(c);

for(i=0; i

資料結構實驗之二叉樹六 哈夫曼編碼

time limit 1000ms memory limit 65536k 有疑問?點這裡 字元的編碼方式有多種,除了大家熟悉的ascii 編碼,哈夫曼編碼 huffman coding 也是一種編碼方式,它是可變字長編碼。該方法完全依據字元出現概率來構造出平均長度最短的編碼,稱之為最優編碼。哈夫曼...

資料結構實驗之二叉樹六 哈夫曼編碼

time limit 1000ms memory limit 65536k 字元的編碼方式有多種,除了大家熟悉的ascii 編碼,哈夫曼編碼 huffman coding 也是一種編碼方式,它是可變字長編碼。該方法完全依據字元出現概率來構造出平均長度最短的編碼,稱之為最優編碼。哈夫曼編碼常被用於資料...

資料結構實驗之二叉樹六 哈夫曼編碼

time limit 1000ms memory limit 65536k 有疑問?點這裡 字元的編碼方式有多種,除了大家熟悉的ascii 編碼,哈夫曼編碼 huffman coding 也是一種編碼方式,它是可變字長編碼。該方法完全依據字元出現概率來構造出平均長度最短的編碼,稱之為最優編碼。哈夫曼...