基础练习 Huffuman树

描述

Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。
  给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下:
  1. 找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}中。这个过程的费用记为pa + pb。
  2. 重复步骤1,直到{pi}中只剩下一个数。
  在上面的操作过程中,把所有的费用相加,就得到了构造Huffman树的总费用。
  本题任务:对于给定的一个数列,现在请你求出用该数列构造Huffman树的总费用。

例如,对于数列{pi}={5, 3, 8, 2, 9},Huffman树的构造过程如下:
  1. 找到{5, 3, 8, 2, 9}中最小的两个数,分别是2和3,从{pi}中删除它们并将和5加入,得到{5, 8, 9, 5},费用为5。
  2. 找到{5, 8, 9, 5}中最小的两个数,分别是5和5,从{pi}中删除它们并将和10加入,得到{8, 9, 10},费用为10。
  3. 找到{8, 9, 10}中最小的两个数,分别是8和9,从{pi}中删除它们并将和17加入,得到{10, 17},费用为17。
  4. 找到{10, 17}中最小的两个数,分别是10和17,从{pi}中删除它们并将和27加入,得到{27},费用为27。
  5. 现在,数列中只剩下一个数27,构造过程结束,总费用为5+10+17+27=59。

输入
输入描述:
  输入的第一行包含一个正整数n(n<=100)。
  接下来是n个正整数,表示p0, p1, …, pn-1,每个数不超过1000。
输入样例:
5
5 3 8 2 9

输出

输出描述:
  输出用这些数构造Huffman树的总费用。
输出样例:
59

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();List<Integer> list=new ArrayList<>();List<Integer> list1=new ArrayList<>();int value=0;int value1=0;for (int i=0;i<n;i++){int p= sc.nextInt();list.add(p);}list.sort(Comparator.naturalOrder());System.out.println(list);for (int i=0;i<n;i++){value=list.get(0)+list.get(1);list.add(value);list1.add(value);list.remove(0);list.remove(0);list.sort(Comparator.naturalOrder());System.out.println(list);if (list.size()==1){for (int j:list1){value1 = j+value1;}System.out.println(value1);break;}}}
}

Huffuman树(java)相关推荐

  1. python【蓝桥杯vip练习题库】—Huffuman树

    Huffuman树 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman ...

  2. 基础练习 Huffuman树 (优先队列)

    基础练习 Huffuman树 时间限制:1.0s   内存限制:512.0MB 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={ ...

  3. 1810: Huffuman树(vector模拟)

    zcmu: 1810: Huffuman树 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 66 Solved: 47 [Submit][Status][ ...

  4. AVL树----java

                                                                                        AVL树----java AVL ...

  5. 前缀树 - Java 实现

    前缀树 - Java 实现 1. 简介 2. 实现 1. 简介 字典树,又称前缀树.前缀树的3个基本性质: 根节点不包含字符,除根节点外每一个节点都只包含一个字符. 从根节点到某一节点,路径上经过的字 ...

  6. java 蓝桥杯 Huffuman树

    目录标题 问题描述 解题思路 代码 流程图 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用 ...

  7. [Java] 蓝桥杯BASIC-28 基础练习 Huffuman树

    问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman树的过程如下: 1. ...

  8. 简单哈弗曼树(Java)

    哈夫曼树的实现 1.编码思想 哈夫曼编码是一种变长的编码方案,字符的编码根据使用频率的的不同而长短不一, 使用频率高的字符其编码较短,使用频率低的字符编码较长,从而使所有的编码总长度为最短. 统计原始 ...

  9. java单词查找树_Trie 单词查找树 java实现(来自算法第4版)

    强烈建议看书上的实现步骤,这里只是一个个人记录. 单词查找树的性能: 查找命中所需的时间与被查找的键的长度成正比.比如单词有7个字符,查找或插入操作最多只需要检查8个节点. 查找未命中只需检查若干个字 ...

最新文章

  1. CString工作原理和常见问题分析
  2. 实现无锁的栈与队列(1)
  3. 【初阶】unity3d官方案例_太空射击SpacingShooter 学习笔记 显示分数时,如何让函数之间相互交流...
  4. c语言火车票管理系统源代码2000行,C语言教务管理系统[2000行代码].doc
  5. 如何发布接口_Devops下的接口全生命周期管理与测试
  6. Wi-Fi闪开,网速快 100 倍的Li-Fi要来了
  7. Eclipse 4.16 稳定版发布
  8. Keil5 显示汉字时字体不生效,设置国标时,字体设置无效。
  9. android 模拟器 root
  10. 【现代密码学】大作业-RSA大礼包
  11. 计算机系统机构中的八个伟大思想
  12. 【蓝桥杯选拔赛真题34】Scratch数苹果 少儿编程scratch蓝桥杯选拔赛真题讲解
  13. 2018年科研大事件——科学和伦理之间的较量
  14. pythonshell压缩文件_文件夹压缩成zip格式
  15. python循环输入错误重新输入_python输入三次错误密码,用户锁定问题
  16. 【机器学习】XgBoost 原理详解 数学推导
  17. b-tree和b+tree以及mysql为什么使用了b+树
  18. 量子计算机拓扑超导新状态,美研制出奇特的拓扑超导体材料
  19. java计算机毕业设计医院人事档案管理系源码+系统+mysql数据库+lw文档
  20. 科技“战”疫,AI的春天来了吗?

热门文章

  1. 2017.5.6 表达式的值 思考记录
  2. 2017.3.29 报表统计 思考记录
  3. ip别名及其在tcp压力测试时候的作用
  4. 华为鸿蒙应用市场抽成,谷歌宣布抽成30%,开发者把华为鸿蒙看做是取代安卓的唯一救星...
  5. UIButton的几种触发方式
  6. Spring Boot 2.0.0.M7 生产环境部署
  7. Voice Lab 7- AAR-SRST-Media Resource
  8. Entity Framework 6 Recipes 2nd Edition(13-6)译 - 自动编译的LINQ查询
  9. (原创)面向对象的系统对接接口编写。第4篇
  10. 用CSV文件读写数据的两种方式(转)