【树】哈夫曼树(一)
题目
假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为7、19、2、6、32、3、21、10。试为这8个字母设计哈夫曼编码。如果用二进制数表示这8个字母的编码方案.(请按照左子树根节点的权小于等于右子树根节点的权的次序构造
Input
第一行为字母的个数n;
第二行至第n+1行分别为各个字母在电文中出现的频率。
Output
按照中序遍历输出各个编码
Sample Input
8
7
19
2
6
32
3
21
10
Sample Output
19:00
21:01
2:10000
3:10001
6:1001
7:1010
10:1011
32:11
解析
啊不开SPJ就很烦的
烦又能怎么样呢,我又不会写SPJ
哈夫曼树,是一个最优叶子节点划分问题,常被用于压缩
不得不说这个算法是真的冷门,全洛谷只有一道荷马史诗是哈夫曼题
code:
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
int n,x[10010]