蓝桥杯 Huffuman树

标签: PAT
15人阅读 评论(0) 收藏 举报
分类:
问题描述
  Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。
  给出一列数{pi}={p0p1, …, pn-1},用这列数构造Huffman树的过程如下:
  1. 找到{pi}中最小的两个数,设为papb,将papb从{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。
输入格式
  输入的第一行包含一个正整数nn<=100)。
  接下来是n个正整数,表示p0p1, …, pn-1,每个数不超过1000。
输出格式
  输出用这些数构造Huffman树的总费用。
样例输入
5
5 3 8 2 9
样例输出
59

代码:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
	int n,sum=0;
	cin>>n;
	int num[n];
	for(int i = 0;i<n;i++)
		cin>>num[i];
	for(int i=1;i<n;i++)                 //根据题目,每次排序后,抽出两个最前面的小数进行相加
	{
		sort(num,num+n);
			num[0] = num[0] + num[1];
			num[1] = 105000;             //这里要注意,设置的值一定要很大
			sum += num[0];
	}	
	printf("%d",sum);
	return 0;
}


查看评论

蓝桥杯huffuman树

思路是首先把得到的数组进行排序,这里使用插入法排序,然后用s存放最小的两个数字之和(即为费用Pa+Pb),在数组元素第二小的地址上存放最小两数值和,最小一位清零,循环结束时s即为最终费用。#inclu...
  • sinat_36570284
  • sinat_36570284
  • 2016-12-10 12:21:23
  • 665

Java蓝桥杯Huffuman树

基础练习 Huffuman树   问题描述   Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。   给出一列数{pi}={p0, p1...
  • wzt529
  • wzt529
  • 2016-12-09 14:25:24
  • 793

【蓝桥杯】【Huffuman树】

题目:Huffuman树 问题描述   Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。   给出一列数{pi}={p0, p1, …, pn-1},用这列数构造...
  • bear_huangzhen
  • bear_huangzhen
  • 2016-04-14 09:56:35
  • 1230

蓝桥杯基础练习 Huffuman树

Link:http://lx.lanqiao.org/problem.page?gpid=T69 基础练习 Huffuman树   时间限制:1.0s   内存限制:512...
  • Enjoying_Science
  • Enjoying_Science
  • 2016-01-28 18:08:52
  • 770

l蓝桥杯备战- Huffuman树

思路:(1)输入一个数组       (2)将数组按从小到大的顺序排列,可以用sort()函数       (3)将数组的前两个元素相加,并去掉,并存入他们之和进入数组       (4)循环内...
  • xiaokehai
  • xiaokehai
  • 2014-11-13 21:54:53
  • 383

蓝桥杯试题Huffuman树java实现

import java.util.Arrays; import java.util.Scanner; public class Huffuman {     public static ...
  • microopithecus
  • microopithecus
  • 2017-12-29 19:18:37
  • 125

蓝桥杯:基础练习 Huffuman树

基础练习 Huffuman树  这题一开始就说用贪心了,我就不再解释需要什么算法了,先贴代码:#include&amp;lt;iostream&amp;gt; #include&amp;lt;algo...
  • chentyit
  • chentyit
  • 2018-03-21 15:41:48
  • 31

【蓝桥杯】Huffuman树费用问题

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

蓝桥杯java 基础练习 Huffuman树

问题描述   Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。   给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的...
  • qq_33430445
  • qq_33430445
  • 2018-01-23 22:41:16
  • 359

蓝桥杯VIP试题Huffuman树

问题描述   Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。   给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过...
  • gyyandzhm
  • gyyandzhm
  • 2017-11-22 20:50:43
  • 63
    个人资料
    持之以恒
    等级:
    访问量: 9393
    积分: 1080
    排名: 4万+
    文章存档
    最新评论