PS.学习priority_queue,请直接到文末点击链接。此篇是priority_queue解决哈夫曼树问题。

研究生考试机试:

哈夫曼树

题目描述:

哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。

输入:

输入有多组数据。

每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。

输出:

输出权值。

样例输入:

5

1 2 2 5 9

样例输出: 37

-----------------------分割线-------------

九度oj上一个人的解法:

语言:C

#include<functional>
#include<stdio.h>
#include<queue>
using namespace std;
priority_queue<int, vector<int>, greater<int> > Q;
int main() {//program 哈夫曼树int n, ans = 0;while (scanf("%d", &n) != EOF) {while (Q.empty() == false)Q.pop();for (int i = 0; i < n; i++) {int x;scanf("%d", &x);Q.push(x);}ans = 0;while (Q.size() > 1) {int a = Q.top();Q.pop();int b = Q.top();Q.pop();ans = ans + a + b;Q.push(a + b);}printf("%d\n", ans);}return 0;
}

以上代码用priority_queue解决了问题。

网上搜索priority_queue,看到一篇学习贴,链接http://www.cnblogs.com/flyoung2008/articles/2136485.html

从中受益。

转载于:https://www.cnblogs.com/flyinsky2017/p/6555097.html

解决oj哈夫曼树问题,学习了priority_queue相关推荐

  1. 数据结构与算法学习④(哈夫曼树 图 分治回溯和递归)

    数据结构与算法学习④(哈夫曼树 图 回溯和递归 数据结构与算法学习④ 1.哈夫曼树 1.1.相关概念 1.2.哈夫曼树的构建 1.3.哈夫曼编码 1.4.面试题 2.图 2.1.图的相关概念 2.2. ...

  2. 【算法学习笔记】哈夫曼树的构建和哈夫曼编码的实现代码

    介绍 哈夫曼(Haffman)这种方法的基本思想如下: ①由给定的n个权值{W1,W2,-,Wn}构造n棵只有一个叶子结点的二叉树,从而得到一个二叉树的集合F={T1,T2,-,Tn}. ②在F中选取 ...

  3. 深入学习二叉树(三) 霍夫曼树

    深入学习二叉树(三) 霍夫曼树 1 前言 霍夫曼树是二叉树的一种特殊形式,又称为最优二叉树,其主要作用在于数据压缩和编码长度的优化. 2 重要概念 2.1 路径和路径长度 在一棵树中,从一个结点往下可 ...

  4. 数据结构学习记录——哈夫曼树(什么是哈夫曼树、哈夫曼树的定义、哈夫曼树的构造、哈夫曼树的特点、哈夫曼编码)

    目录 什么是哈夫曼树 哈夫曼树的定义 哈夫曼树的构造 图解操作 代码实现 代码解析 哈夫曼树的特点 哈夫曼编码 不等长编码 二叉树用于编码 哈夫曼编码实例 什么是哈夫曼树 我们先举个例子: 要将百分制 ...

  5. 数据结构学习——哈夫曼树

    数据结构学习记录DAY13 :哈夫曼树(上) 哈(赫)夫曼树和哈(赫)夫曼编码 路径 一个结点到另外一个结点的通路,称为路径 (祖先结点到子孙结点) 路径长度: 每经过一个结点,路径长度就增加1,不包 ...

  6. 学习日志---哈夫曼树相关算法

    哈夫曼树概念: 如果二叉树中的叶结点都带有权值,我们可以把这个定义加以推广.设二叉树有n个带权值的叶结点,定义从二叉树的根结点到二叉树中所有叶结点的路径长度与相应叶结点权值的乘积之和为该二叉树的带权路 ...

  7. 数据结结构学习 ---赫夫曼树

    ------ 赫夫曼树和赫夫曼编码的存储表示------ typedef struct {unsigned int weight;unsigned int parent,lchild,rchild; ...

  8. 贪婪算法在解决哈夫曼树及编码问题中的应用

    哈夫曼编码,是一种可变字长编码(VLC)的高效算法.该算法是Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码. 相比定长编码来 ...

  9. 九度OJ——1172哈夫曼树

    题目描述: 哈夫曼树,第一行输入一个数n,表示叶结点的个数.需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和. 输入: 输入有 ...

最新文章

  1. 【Java_基础】Java中Native关键字的作用
  2. 不填写内容用哪个斜杠代替_越来越多人衣柜不装移门,今后都流行用这种代替,好看又不占地!...
  3. 展示博客(Beta阶段)
  4. 1-Alternative Boot Flows
  5. Leetcode题解(22)
  6. 为什么有的SAP CRM系统的产品搜索页面上会显示小红叉
  7. 新汉诺塔(洛谷P1242)含第11个数据的解决办法
  8. 居然被韩雪的英语原地圈粉了!更意外的是,她不背语法不请老师,光靠每天10分钟就能练出流利口语!
  9. C语言,功能一、利用一维数组和选择法对成绩高低排序,功能二、输出对应的学号,功能三、查找对应学生成绩
  10. 记录一下flex布局左边固定,右边100%
  11. Dubbo(十四) dubbo的服务降级与集群容错
  12. Pandas set_indexreset_index
  13. C++ const常量和指针
  14. Multidimensional Scaling (MDS)
  15. Octotree访问私有仓库:Error: Private repository
  16. 【Unity3D】表格
  17. CAD2020软件安装教程【搬运】
  18. 2019年2月已到,Java 8要收费了吗?
  19. javascript脚本_应用JavaScript:用户脚本
  20. EasyUI的Vue版本

热门文章

  1. (四) shiro权限与角色
  2. 从程序员到CTO的Java技术路线图 (转自安卓巴士)
  3. MySQL约束课堂笔记
  4. 2019全球AI人才报告发布:AI专家仅3.6万
  5. ssm整合之四 分页
  6. 实战|简单绕过waf拿下赌博网站
  7. 基础练习 数列排序 c语言
  8. 《程序员面试金典》合法括号判断
  9. 互联网公司面试经历(转载)
  10. 第06课:动手实战基于 ML 的中文短文本分类