【算法笔记第9.8节-哈夫曼编码】问题 C: 哈夫曼树(最小带权路径长度)
问题 C: 哈夫曼树
时间限制: 1 Sec 内存限制: 32 MB
提交: 149 解决: 88
[提交][状态][讨论版][命题人:外部导入]
题目描述
哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。
输入
输入有多组数据。
每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。
输出
输出权值。
样例输入
2 2 8 3 5 11 30
样例输出
10 62
优先队列(小顶堆)
#include<stdio.h>
#include<queue>
#include<vector>
using namespace std;
int main()
{int n;while(scanf("%d",&n)!=EOF){priority_queue<int, vector<int>, greater<int> > q;int t;for(int i=0; i<n; i++){scanf("%d",&t);q.push(t);}int ans = 0;while(q.size() > 1){int a, b;a = q.top(); q.pop();b = q.top(); q.pop();ans += (a+b);q.push(a+b);}printf("%d\n", ans);}
}/**************************************************************Problem: 1921User: 151210132Language: C++Result: 正确Time:0 msMemory:1172 kb
****************************************************************/
【算法笔记第9.8节-哈夫曼编码】问题 C: 哈夫曼树(最小带权路径长度)相关推荐
- 算法学习笔记——数据结构:哈夫曼树、带权路径长度WPL、哈夫曼编码
引入 合并果子问题如下: 有n堆果子,每次可以合并任意两堆果子,耗费体力值为[两堆果子数之和],最终在n-1次合并后,得到一堆果子. 给出合并的方案,使得耗费的体力值最小 例如有3堆果子,质量依次为1 ...
- 哈夫曼编码(基于哈夫曼树-最优二叉树,不唯一)、B树(b-树)、B+树
整合自: http://blog.csdn.net/shuangde800/article/details/7341289 http://www.cnblogs.com/Jezze/archive/2 ...
- 哈夫曼编码(构建哈夫曼树)
目录 1.哈夫曼树 (1)相关概念 (2)定义 (3)哈夫曼算法 2.哈夫曼编码 (1)相关概念 (2)定义 (3)代码实现 3.完整代码 4.测试输出 1.哈夫曼树 (1)相关概念 叶子结点的权值: ...
- 给定结点权值,求哈夫曼树的带权路径长度和
1.哈夫曼树概念 一棵树中,从任意一个结点到达另一个结点的通路叫做路径,该路径包含的边的个数称为路径长度,每个结点带有的表示某种意义的值成为权值.从根结点到叶子结点的路径长度乘以叶子节点权值,得到的值 ...
- 创建霍夫曼树,霍夫曼编码以及使用霍夫曼编码压缩文件
那么,什么是霍夫曼树(赫夫曼树)呢? 给定n个权值(权值就是每个节点里面存放的数据,但是根据业务需求不同,存放的数据类型有些差别)作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样 ...
- 哈夫曼树 和 树的带权路径长度
树的带权路径长度(Weighted Path Length of Tree):定义为树中所有叶结点的带权路径长度之和. 结点的带权路径长度:结点到树根之间的路径长度与该结点上权的乘积. 哈夫曼树是一种 ...
- 自动计算哈夫曼树的带权路径长度
C语言自动计算哈夫曼树的带权路径长度: #include<stdio.h> #include<stdlib.h> int cmp(const void *a,const voi ...
- 哈夫曼树与带权路径长度
问题: 权值分别为从19,21,2,3,6,7,10,32的结点,构造一棵哈夫曼树,该树的带权路径长度是? 哈夫曼树的一个应用: 压缩字符串https://blog.csdn.net/dyingstr ...
- 哈夫曼树(带权路径长度+树的带权路径长度+哈夫曼树定义+构造哈夫曼树+哈夫曼树性质+哈夫曼编码+计算平均码长-这里指WPL)
带权路径长度 树的带权路径长度WPL 哈夫曼树 哈夫曼树构造 哈夫曼树性质 哈夫曼编码 固定长度编码 可变长编码 前缀编码 固定长度编码.可变长编码.前缀编码.哈夫曼编码 思维倒图 试题
最新文章
- 360浏览器登录_360安全浏览器12下载-360安全浏览器12最新版下载
- 剑指offer系列之三十七:二叉树的深度
- 1.4. Rosegarden
- numpy 矩阵的用法
- wireshark相关协议详解和nc命令建立对话
- 通过ITypedList实现数据绑定扁平化
- AJAX应用【股票案例、验证码校验】
- 利用VSCode阅读OpenFOAM源代码及其调试Debug【终极总结篇】
- bigint hive java类型_详解Apache Hudi如何配置各种类型分区
- [洛谷P3292] [SCOI2016]幸运数字
- paip.gch预编译头不生效的原因以及解决:
- PADS2007教程(三)——原理图和PCB封装建立关联
- 小米4 win10 刷回android,小米4怎么从Win10刷回miui7
- 记录在WIN10家庭版下安装LR11出现问题
- 解决vs2008安装问题 Office 2007 Microsoft Visual Studio Web 创作组件 安装失败
- oracle 9i告警日志,Oracle 9i,10g,11g各自alert日志的位置
- 一文教你如何挑选深度学习GPU
- 微信网页扫码支付(公众号)JAVA实现
- Arduino ESP32 深度睡眠与外部唤醒(EXT0)
- 微信运动刷步怎么用?微信运动刷步使用教程[多图]