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

2021-10-10 06:18:20 字數 855 閱讀 1679

字元的編碼方式有多種,除了大家熟悉的ascii編碼,哈夫曼編碼(huffman coding)也是一種編碼方式,它是可變字長編碼。該方法完全依據字元出現概率來構造出平均長度最短的編碼,稱之為最優編碼。哈夫曼編碼常被用於資料檔案壓縮中,其壓縮率通常在20%~90%之間。你的任務是對從鍵盤輸入的乙個字串求出它的ascii編碼長度和哈夫曼編碼長度的比值。

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

對應字元的ascii編碼長度la,huffman編碼長度lh和la/lh的值(保留一位小數),資料之間以空格間隔。

input 

aaaaabcd

the_cat_in_the_hat

output 

64 13 4.9

144 51 2.8

#include #include #includechar s[5000];

int q[10000],t[10000];

void arrange(int a,int left,int right)

a[i]=x;

arrange(a,left,i-1);

arrange(a,i+1,right);

}int main()

//記錄下每個字元出現的次數。

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

}arrange(q,0,top-1);//從小到大排好序

int sum=0;

int x1,x2;

while(top!=rear)

}printf("%d %d %.1lf\n",m,sum,1.0*m/sum);

}return 0;

}

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

字元的編碼方式有多種,除了大家熟悉的ascii編碼,哈夫曼編碼 huffman coding 也是一種編碼方式,它是可變字長編碼。該方法完全依據字元出現概率來構造出平均長度最短的編碼,稱之為最優編碼。哈夫曼編碼常被用於資料檔案壓縮中,其壓縮率通常在20 90 之間。你的任務是對從鍵盤輸入的乙個字串求...

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

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

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

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