1535: 哈夫曼编码
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:70
解决:51
题目描述
有一个仓库要为存放的n种物品定编码,这n种物品进出的频率大不相同,为了让操作编码的动作最少,请你编程设计它们的编码,写出n中物品的二进制编码。
输入
输入有若干行,每行是一个仓库的情况。每行的第一个正整数n表示要编码的物品有n种,接着有n个小于1的正数,各表示相应物品的进出仓的频率。
输出
每个仓库的情况输出一行,输出这些物品的编码。格式见样例。每组数据之间空一行。
样例输入 复制
7 0.4 0.3 0.15 0.05 0.04 0.03 0.03
2 0.4 0.5
样例输出 复制
0.4的编码是:0
0.3的编码是:10
0.15的编码是:110
0.05的编码是:11111
0.04的编码是:11110
0.03的编码是:11100
0.03的编码是:11101
0.4的编码是:0
0.5的编码是:1
提示
先建立哈夫曼树,再进行编码。
注意:哈夫曼编码不唯一,建树时,按小的在前的原则,同值的,层高小的在前。