题目描述

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

输入

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

输出

输出权值。

样例输入

2
2 8
3
5 11 30

样例输出

10
62
#include <cstdio>
#include <queue>
using namespace std;priority_queue<long long, vector<long long>, greater<long long> > q;int main(int argc, char** argv) {int n,i;long long x,y,temp,wpl;while(scanf("%d", &n) != EOF){ //多组输入 wpl = 0;  //初始化权值 while(!q.empty()) q.pop(); //初始化队列 for(i = 0; i < n; i++){scanf("%lld", &temp);q.push(temp); }while(q.size() > 1){x = q.top();q.pop();y = q.top();q.pop();q.push(x + y); wpl += x + y;}printf("%lld\n", wpl);}return 0;
}

【哈夫曼树】带权路径长度WPL相关推荐

  1. 带权路径长度wpl值_哈夫曼树带权路径长度怎么计算

    哈夫曼树的带权路径长度是什么? 1.树的路径长度 树的路径长度是从树根到树中每一结点的路径长度之和.在结点数目相同的二叉树中,完全二叉树的路径长度最短. 2.树的带权路径长度(Weighted Pat ...

  2. 哈夫曼树带权路径长度

    一. 长什么样? 左边是普通树,右边是哈夫曼树 图a: WPL=5*2+7*2+2*2+13*2=54 图b: WPL=5*3+2*3+7*2+13*1=48 可见,图b的带权路径长度较小,我们可以证 ...

  3. 哈夫曼树带权路径长度求解(C语言实现)

    题目描述: 哈夫曼树,第一行输入一个数n,表示叶结点的个数. 需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出哈夫曼树的带权路径长度(WPL). 输入格式 ...

  4. 哈夫曼树带权路径长度c语言,【哈夫曼树】求结点的哈夫曼的带权路径长度

    本文用C++采用顺序存储实现求哈夫曼树(即最小生成树)的带权路径长度 努力 下面来了解一下哈夫曼树的构造以及如何求带权路径长度: 哈夫曼树为带权路径长度最小的树 哈夫曼树 哈夫曼树的顺序存储 [问题描 ...

  5. 【数据结构-N】哈夫曼树带权路径计算

    那个闪闪发光的人 会在某一天的雨后,不经意地出现在你的迷茫路口. 目录: 哈夫曼树的构建 带权路径长度计算 >>构建 哈夫曼树,又称最优二叉树,是一类带权路径长度最短的树. 构建哈夫曼树的 ...

  6. 求节点的哈夫曼的带权路径长度

    [问题描述]  已知输入一串正整数,正整数之间用空格键分开,请建立一个哈夫曼树,以输入的数字为叶节点,求这棵哈夫曼树的带权路径长度. [输入形式]  首先输入正整数的个数,然后接下来为接下来的正整数, ...

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

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

  8. 哈夫曼树及求其WPL的算法

    哈夫曼树及求其WPL算法 一.概念 给定 N N N个权值作为 N N N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree ...

  9. 哈夫曼树建立与二叉树WPL算法以及相关例题

    目录 哈夫曼树静态数组形式建立 哈夫曼树二叉链表形式建立 求WPL 哈夫曼树编码解码 更新 哈夫曼树的建立有两种方式,一种是通过静态数组的方式来建立(这种方式比较简洁明了好理解),由于不想篇幅太长了, ...

  10. 二叉树的带权路径长度WPL算法实现

    文章目录 题目描述 算法思想 实现代码 题目描述  二叉树的带权路径长度WPL是二叉树中所有叶结点的带权路径长度之和.给定一棵二叉树,采用二叉链表存储,叶子结点的weight域为该结点的权值.请设计一 ...

最新文章

  1. 02基于注解开发SpringMVC项目(jar包,异步,request,参数传递,多选的接收,Model传参,map传参,model传参,ajax,重定向,时间日期转换)
  2. Python中super的用法
  3. java 压缩二进制流_Java:自己动手写压缩软件,超详细解释(哈夫曼实现)
  4. 新年计算机等级的决定的英语,新年决定英语对话及译文
  5. OpenStack点滴01-概览
  6. 蓝桥杯2019年第十届C/C++省赛C组第一题-求和
  7. Latent Dirichlet Allocation(LDA)
  8. 实现 8086 汇编编译器(一)——基本框架
  9. form中action属性
  10. Robocup场地信息
  11. IDC数据中心机房气体灭火系统知识
  12. Idea安装完成后打不开的问题
  13. NX程序调试方法实例讲解
  14. ubuntu11.04下Discuz论坛的安装
  15. Macbook Pro常用快捷键及问题汇总
  16. leetcode 19. 删除链表的倒数第 N 个结点(双指针应用)
  17. html 最大输入长度,TextArea设置MaxLength属性最大输入值的js代码
  18. 现在微商做什么比较好赚钱 微商推广好做吗 怎么做
  19. VC++2005相关问题解决方案
  20. Mesh is Art(5):Circle Packing Mesh优化及其应用

热门文章

  1. mybatis-plus的基础入门
  2. 计算机管理信息系统实训报告,管理信息系统实验报告范文
  3. 水山破碎锤的五个大特点
  4. Math.abs(x)<1e-6
  5. Java 创建文件时 创建文件夹
  6. Linux visudo配置详解
  7. Khatri-Rao积(KR积)
  8. 现代密码学(四)——RSA密码体制
  9. js获得当前日期时间
  10. linux临界区原理,临界区的实现原理