对输入的英文大写字母进行统计概率 然后构建哈夫曼树,输出是按照概率降序排序输出Huffman编码
输入
大写字母个数 n 第一个字母 第二个字母 第三个字母 ... 第n个字母
对输入的英文大写字母进行统计概率 然后构建哈夫曼树,输出是按照概率降序排序输出Huffman编码
输入
大写字母个数 n 第一个字母 第二个字母 第三个字母 ... 第n个字母
输出
字母1 出现次数 Huffman编码
字母2 出现次数 Huffman编码
字母3 出现次数 Huffman编码
…
字母n 出现次数 Huffman编码
Sample In
10
I I U U U I U N U U
字母1 出现次数 Huffman编码
字母2 出现次数 Huffman编码
字母3 出现次数 Huffman编码
…
字母n 出现次数 Huffman编码
Sample In
10
I I U U U I U N U U
Sample Out
U 6 1
I 3 01
N 1 00
解决此题首先要明白HuffmanTree的构造原理
I 3 01
N 1 00
解决此题首先要明白HuffmanTree的构造原理
首先来看一个简单的例子:
把某个班同学百分制的成绩转换成5分制,规则如下,
90~100 5
80~90 4
70~80 3
60~70 2
<60 1
<60 1
看起来很容易实现
即 if (score<60)
grade=1;
else if(score<70)
grade=2;
else if(score<80)
grade=3;
else if(score<90)
grade=4;
else
grade=5;
但是如果这个班的同学大多数都取得了90分以上的好成绩,那么前面4步的判断是很没必要且费时的。
很明显,这种算法在面对大量数据的时候是比较不合理的。
那么如何优化算法呢?
假定我们目前已经知道了这个班成绩的分布律
成绩 |
<60 |