time limit: 1000 ms
memory limit: 65536 kib
submit
statistic
discuss
problem description
字元的編碼方式有多種,除了大家熟悉的ascii
編碼,哈夫曼編碼
(huffman coding)
也是一種編碼方式,它是可變字長編碼。該方法完全依據字元出現概率來構造出平均長度最短的編碼,稱之為最優編碼。哈夫曼編碼常被用於資料檔案壓縮中,其壓縮率通常在
20%~
90%之間。你的任務是對從鍵盤輸入的乙個字串求出它的
ascii
編碼長度和哈夫曼編碼長度的比值。
input
輸入資料有多組,每組資料一行,表示要編碼的字串。
output
對應字元的ascii
編碼長度la,
huffman
編碼長度lh和
la/lh的值(
保留一位小數
),資料之間以空格間隔。
sample input
aaaaabcdthe_cat_in_the_hat
sample output
64 13 4.9144 51 2.8
#include #include #includevoid arrange( int *a, int lt, int rt )
a[i] = key;
arrange( a, lt, i-1 );
arrange( a, i+1, rt);
}int main()
for( i = 0; i < 500; i++)
}arrange( q, 0, head-1 );
int sum = 0;
int a, b;
while( head != tail )
}printf("%d %d %.1lf\n", len*8, sum, 1.0*len*8/sum );
}return 0;
}
SDUT OJ 資料結構實驗之二叉樹五 層序遍歷
time limit 1000ms memory limit 65536k 已知乙個按先序輸入的字串行,如abd,eg,cf,其中,表示空結點 請建立二叉樹並求二叉樹的層次遍歷序列。輸入資料有多行,第一行是乙個整數t t 1000 代表有 t行測試資料。每行是 乙個長度小於50 個字元的字串。輸出二...
SDUT OJ資料結構實驗之二叉樹三 統計葉子數
time limit 1000ms memory limit 65536k 已知二叉樹的乙個按先序遍歷輸入的字串行,如abc,de,g,f,其中,表示空結點 請建立二叉樹並求二叉樹的葉子結點個數。連續輸入多組資料,每組資料輸入乙個長度小於50個字元的字串。輸出二叉樹的葉子結點個數。abc,de,g,...
SDUT OJ 資料結構實驗之二叉樹六 哈夫曼編碼
time limit 1000 ms memory limit 65536 kib submit statistic discuss problem description 字元的編碼方式有多種,除了大家熟悉的ascii編碼,哈夫曼編碼 huffman coding 也是一種編碼方式,它是可變字長編...