description
字元的編碼方式有多種,除了大家熟悉的ascii編碼,哈夫曼編碼(huffman coding)也是一種編碼方式,它是可變字長編碼。該方法完全依據字元出現概率來構造出平均長度最短的編碼,稱之為最優編碼。哈夫曼編碼常被用於資料檔案壓縮中,其壓縮率通常在20%~90%之間。你的任務是對從鍵盤輸入的乙個字串求出它的ascii編碼長度和哈夫曼編碼長度的比值。
input
輸入資料有多組,每組資料一行,表示要編碼的字串。
output
對應字元的ascii編碼長度la,huffman編碼長度lh和la/lh的值(保留一位小數),資料之間以空格間隔。
sample
input
aaaaabcd
the_cat_in_the_hat
output
64 13 4.9
144 51 2.8
#include
#include
using namespace std;
intmain()
top=down=0;
// 棧頂和棧底
for(i=
0;i<
505;i++
) sum2=0;
sort
(p,p+top)
;// 對棧內元素進行排序
while
(top!=down)
}printf
("%d %d %.1f\n"
,sum1,sum2,sum1*
1.0/sum2);}
}
資料結構實驗之二叉樹六 哈夫曼編碼
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 也是一種編碼方式,它是可變字長編碼。該方法完全依據字元出現概率來構造出平均長度最短的編碼,稱之為最優編碼。哈夫曼編碼常被用於資料...