10. 计算WPL

Huffman编码是通信系统中常用的一种不等长编码,它的特点是:能够使编码之后的电文长度最短。
输入:
第一行为要编码的符号数量n
第二行~第n+1行为每个符号出现的频率
输出:
对应哈夫曼树的带权路径长度WPL

测试用例1:
输入:
5
7
5
2
4
9
输出:
WPL=60

测试用例2:
输入:
5
2
4
2
3
3
输出:
WPL=32

测试用例3:
输入:
1
15
输出:
0

解析:这道题与上个学期程设开的一道题《郭老师家的果园》有点类似,以7,5,2,4,9为例,首先找到第一小和第二小2,4并第一次合并7,5,6,9,耗费体力6,第二次找到第一小和第二小5,6合并:7,11,9,第二次消耗体力为11,累计消耗体力为17,再次找到第一小和第二小7,9,合并:16,11,消耗体力16,累计消耗33,最后一次找到第一小和第二小11,16合并为27,消耗27,累计消耗60.基本就是模拟一下这个过程就好。注意只有一个数时是不用合并的,所以消耗为0.

你可能感兴趣的:(2017DS)