题目:给定一个字符串,求哈夫曼编码的最短长度:
输入:
abbcccdddd
输出:
19
分析:扫描一遍字符串,计算出每个字符的频度,然后把频度按照放到小顶堆中,每次取小顶堆堆顶的两个频度,把这两个频度的和加入到最短长度中,并且把这个和重新插入小顶堆中;如此循环,直到小顶堆只有一个元素。
#include<iostream>
#include<string>
#include<map>
#include<vector>
#include<queue>
using namespace std;
map<char,