问题A日期格式太简单,就不写了,有手就行
问题C2n皇后问题嫌麻烦,emm,我比较懒,罢了罢了问题 B: 哈夫曼编码
题目描述
给定一只含有小写字母的字符串;输出其哈夫曼编码的长度
输入
第一行一个整数T,代表样例的个数,接下来T行,每行一个字符串,0
输出
对于每个字符串,输出其哈夫曼编码长度
样例输入
3 hrvsh lcxeasexdphiopd mntflolfbtbpplahqolqykrqdnwdoq
样例输出
10 51 115
首先关于哈夫曼编码长度,以题目中的数据举例,hrvsh的频次为1112,作出树可得如下:哈夫曼树
有两种画树的方法,算出来的长度都为10
这里就有了一种我也不知道为什么但是就是很nb的算法:计算哈夫曼编码长度
在编程实现时,可以使用priority_queue实现,这是一个优先队列,每次push之后可以自动排序(记得包含头文件 #include)
定义方法如下:
priority_queue ,greater > a; //升序队列
priority_queue ,less >a; //降序队列
使用方法和queue几乎一样:
top 访问队头元素
push 插入元素到队尾然后排序
pop 弹出