time limit: 1000ms
memory limit: 65536kb
problem description
字元的編碼方式有多種,除了大家熟悉的ascii
編碼,哈夫曼編碼
(huffman coding)
也是一種編碼方式,它是可變字長編碼。該方法完全依據字元出現概率來構造出平均長度最短的編碼,稱之為最優編碼。哈夫曼編碼常被用於資料檔案壓縮中,其壓縮率通常在
20%~
90%之間。你的任務是對從鍵盤輸入的乙個字串求出它的
ascii
編碼長度和哈夫曼編碼長度的比值。
input
輸入資料有多組,每組資料一行,表示要編碼的字串。
output
對應字元的
ascii
編碼長度la,
huffman
編碼長度lh和
la/lh的值(
保留一位小數
),資料之間以空格間隔。
example input
aaaaabcdthe_cat_in_the_hat
example output
64 13 4.9144 51 2.8
純c碼#include
#include
char ch[500];
int num[500];
int pai(int a, int low, int high)
a[low] = k;
return low;
}void qsort(int a, int left, int right)//快排
}int main()
memset(queue, 0, sizeof(queue));
for(i = 0; i <= 500; i++)
int sum = 0;
int sum2 = 0;
while(k - count >= 2)
printf("%d %d %.1lf\n", sum1, sum2, sum1 * 1.0 / sum2);
}return 0;
}
資料結構實驗之二叉樹六 哈夫曼編碼
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 也是一種編碼方式,它是可變字長編碼。該方法完全依據字元出現概率來構造出平均長度最短的編碼,稱之為最優編碼。哈夫曼編碼常被用於資料...