time limit: 1000ms
memory limit: 65536kb
submit
statistic
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
#include#include#include#include#includeusing namespace std;char a[10000];
char b[1000];
int main()
multisetq;
for(i = 0; i <= 500; i++)
}int x1;
int x2;
int k = 0;
while(!q.empty())
}double mn;
mn = (double)n/k;
printf("%d %d %.1lf\n",n,k,mn);
} return 0;
}
資料結構 哈夫曼樹 哈夫曼編碼
哈夫曼樹又稱最優樹 二叉樹 是一類帶權路徑最短的樹。構造這種樹的演算法最早是由哈夫曼 huffman 1952年提出,這種樹在資訊檢索中很有用。結點之間的路徑長度 從乙個結點到另乙個結點之間的分支數目。樹的路徑長度 從樹的根到樹中每乙個結點的路徑長度之和。結點的帶權路徑長度 從該結點到樹根之間的路徑...
哈夫曼編碼 哈夫曼樹 (資料結構)
哈夫曼編碼,又稱霍夫曼編碼,是一種編碼方式,哈夫曼編碼是可變字長編碼 vlc 的一種。huffman於1952年提出一種編碼方法,該方法完全依據字元出現概率來構造異字頭的平均長度最短的碼字,有時稱之為最佳編碼,一般就叫做huffman編碼 有時也稱為霍夫曼編碼 include include inc...
資料結構 哈夫曼編碼
include include include using namespace std typedef struct huffman nodeelement void select2min element huffnodes,int n,int m1,int m2 for int i 0 i n i...