Huffuman树(java)
基础练习 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)相关推荐
- python【蓝桥杯vip练习题库】—Huffuman树
Huffuman树 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman ...
- 基础练习 Huffuman树 (优先队列)
基础练习 Huffuman树 时间限制:1.0s 内存限制:512.0MB 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={ ...
- 1810: Huffuman树(vector模拟)
zcmu: 1810: Huffuman树 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 66 Solved: 47 [Submit][Status][ ...
- AVL树----java
AVL树----java AVL ...
- 前缀树 - Java 实现
前缀树 - Java 实现 1. 简介 2. 实现 1. 简介 字典树,又称前缀树.前缀树的3个基本性质: 根节点不包含字符,除根节点外每一个节点都只包含一个字符. 从根节点到某一节点,路径上经过的字 ...
- java 蓝桥杯 Huffuman树
目录标题 问题描述 解题思路 代码 流程图 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用 ...
- [Java] 蓝桥杯BASIC-28 基础练习 Huffuman树
问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman树的过程如下: 1. ...
- 简单哈弗曼树(Java)
哈夫曼树的实现 1.编码思想 哈夫曼编码是一种变长的编码方案,字符的编码根据使用频率的的不同而长短不一, 使用频率高的字符其编码较短,使用频率低的字符编码较长,从而使所有的编码总长度为最短. 统计原始 ...
- java单词查找树_Trie 单词查找树 java实现(来自算法第4版)
强烈建议看书上的实现步骤,这里只是一个个人记录. 单词查找树的性能: 查找命中所需的时间与被查找的键的长度成正比.比如单词有7个字符,查找或插入操作最多只需要检查8个节点. 查找未命中只需检查若干个字 ...
最新文章
- CString工作原理和常见问题分析
- 实现无锁的栈与队列(1)
- 【初阶】unity3d官方案例_太空射击SpacingShooter 学习笔记 显示分数时,如何让函数之间相互交流...
- c语言火车票管理系统源代码2000行,C语言教务管理系统[2000行代码].doc
- 如何发布接口_Devops下的接口全生命周期管理与测试
- Wi-Fi闪开,网速快 100 倍的Li-Fi要来了
- Eclipse 4.16 稳定版发布
- Keil5 显示汉字时字体不生效,设置国标时,字体设置无效。
- android 模拟器 root
- 【现代密码学】大作业-RSA大礼包
- 计算机系统机构中的八个伟大思想
- 【蓝桥杯选拔赛真题34】Scratch数苹果 少儿编程scratch蓝桥杯选拔赛真题讲解
- 2018年科研大事件——科学和伦理之间的较量
- pythonshell压缩文件_文件夹压缩成zip格式
- python循环输入错误重新输入_python输入三次错误密码,用户锁定问题
- 【机器学习】XgBoost 原理详解 数学推导
- b-tree和b+tree以及mysql为什么使用了b+树
- 量子计算机拓扑超导新状态,美研制出奇特的拓扑超导体材料
- java计算机毕业设计医院人事档案管理系源码+系统+mysql数据库+lw文档
- 科技“战”疫,AI的春天来了吗?
热门文章
- 2017.5.6 表达式的值 思考记录
- 2017.3.29 报表统计 思考记录
- ip别名及其在tcp压力测试时候的作用
- 华为鸿蒙应用市场抽成,谷歌宣布抽成30%,开发者把华为鸿蒙看做是取代安卓的唯一救星...
- UIButton的几种触发方式
- Spring Boot 2.0.0.M7 生产环境部署
- Voice Lab 7- AAR-SRST-Media Resource
- Entity Framework 6 Recipes 2nd Edition(13-6)译 - 自动编译的LINQ查询
- (原创)面向对象的系统对接接口编写。第4篇
- 用CSV文件读写数据的两种方式(转)