问题 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: 哈夫曼树(最小带权路径长度)相关推荐

  1. 算法学习笔记——数据结构:哈夫曼树、带权路径长度WPL、哈夫曼编码

    引入 合并果子问题如下: 有n堆果子,每次可以合并任意两堆果子,耗费体力值为[两堆果子数之和],最终在n-1次合并后,得到一堆果子. 给出合并的方案,使得耗费的体力值最小 例如有3堆果子,质量依次为1 ...

  2. 哈夫曼编码(基于哈夫曼树-最优二叉树,不唯一)、B树(b-树)、B+树

    整合自: http://blog.csdn.net/shuangde800/article/details/7341289 http://www.cnblogs.com/Jezze/archive/2 ...

  3. 哈夫曼编码(构建哈夫曼树)

    目录 1.哈夫曼树 (1)相关概念 (2)定义 (3)哈夫曼算法 2.哈夫曼编码 (1)相关概念 (2)定义 (3)代码实现 3.完整代码 4.测试输出 1.哈夫曼树 (1)相关概念 叶子结点的权值: ...

  4. 给定结点权值,求哈夫曼树的带权路径长度和

    1.哈夫曼树概念 一棵树中,从任意一个结点到达另一个结点的通路叫做路径,该路径包含的边的个数称为路径长度,每个结点带有的表示某种意义的值成为权值.从根结点到叶子结点的路径长度乘以叶子节点权值,得到的值 ...

  5. 创建霍夫曼树,霍夫曼编码以及使用霍夫曼编码压缩文件

    那么,什么是霍夫曼树(赫夫曼树)呢? 给定n个权值(权值就是每个节点里面存放的数据,但是根据业务需求不同,存放的数据类型有些差别)作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样 ...

  6. 哈夫曼树 和 树的带权路径长度

    树的带权路径长度(Weighted Path Length of Tree):定义为树中所有叶结点的带权路径长度之和. 结点的带权路径长度:结点到树根之间的路径长度与该结点上权的乘积. 哈夫曼树是一种 ...

  7. 自动计算哈夫曼树的带权路径长度

    C语言自动计算哈夫曼树的带权路径长度: #include<stdio.h> #include<stdlib.h> int cmp(const void *a,const voi ...

  8. 哈夫曼树与带权路径长度

    问题: 权值分别为从19,21,2,3,6,7,10,32的结点,构造一棵哈夫曼树,该树的带权路径长度是? 哈夫曼树的一个应用: 压缩字符串https://blog.csdn.net/dyingstr ...

  9. 哈夫曼树(带权路径长度+树的带权路径长度+哈夫曼树定义+构造哈夫曼树+哈夫曼树性质+哈夫曼编码+计算平均码长-这里指WPL)

    带权路径长度 树的带权路径长度WPL 哈夫曼树 哈夫曼树构造 哈夫曼树性质 哈夫曼编码 固定长度编码 可变长编码 前缀编码 固定长度编码.可变长编码.前缀编码.哈夫曼编码 思维倒图 试题

最新文章

  1. 360浏览器登录_360安全浏览器12下载-360安全浏览器12最新版下载
  2. 剑指offer系列之三十七:二叉树的深度
  3. 1.4. Rosegarden
  4. numpy 矩阵的用法
  5. wireshark相关协议详解和nc命令建立对话
  6. 通过ITypedList实现数据绑定扁平化
  7. AJAX应用【股票案例、验证码校验】
  8. 利用VSCode阅读OpenFOAM源代码及其调试Debug【终极总结篇】
  9. bigint hive java类型_详解Apache Hudi如何配置各种类型分区
  10. [洛谷P3292] [SCOI2016]幸运数字
  11. paip.gch预编译头不生效的原因以及解决:
  12. PADS2007教程(三)——原理图和PCB封装建立关联
  13. 小米4 win10 刷回android,小米4怎么从Win10刷回miui7
  14. 记录在WIN10家庭版下安装LR11出现问题
  15. 解决vs2008安装问题 Office 2007 Microsoft Visual Studio Web 创作组件 安装失败
  16. oracle 9i告警日志,Oracle 9i,10g,11g各自alert日志的位置
  17. 一文教你如何挑选深度学习GPU
  18. 微信网页扫码支付(公众号)JAVA实现
  19. Arduino ESP32 深度睡眠与外部唤醒(EXT0)
  20. 微信运动刷步怎么用?微信运动刷步使用教程[多图]

热门文章

  1. 航班、实时、三维、虚拟现实——《我的航班呢?》
  2. Xcode 6更新默认不支持armv7s架构
  3. 风暴幻想游戏-家园系统设计
  4. HJ97 记负均正(c++)
  5. python时间time格式化、时间戳
  6. 利用Visual C++ 实现QQ消息群发
  7. (转)红包随机算法微信群红包随机算法
  8. 禁用Win10自带截图工具快捷键(Shift+Win+S)
  9. 吐血力作:平台云deis之准备
  10. 接口测试常用工具及测试方法(基础篇)