美文网首页
蓝桥杯:huffumen树--Python解法

蓝桥杯:huffumen树--Python解法

作者: 冒泡泡de可乐 | 来源:发表于2019-12-04 21:21 被阅读0次

问题描述

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。

输出格式

输出用这些数构造Huffman树的总费用。

样例输入

5
5 3 8 2 9

样例输出

59

代码

def run():
    n = int(input())
    num_list = [int(i) for i in input().split()]
    value = 0
    while len(num_list) > 1:
        min1 = num_list.pop(num_list.index(min(num_list)))
        min2 = num_list.pop(num_list.index(min(num_list)))
        num_list.append(min1 + min2)
        value += min1 + min2
    print(value)
run()

相关文章

  • 蓝桥杯:huffumen树--Python解法

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

  • 蓝桥杯:字母图像--Python解法

    问题描述 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF CBABCDE D...

  • 蓝桥杯:闰年判断--Python解法

    问题描述 给定一个年份,判断这一年是不是闰年。 当以下情况之一满足时,这一年是闰年: 年份是4的倍数而不是100的...

  • 蓝桥杯:阶乘计算--Python解法

    问题描述 输入一个正整数n,输出n!的值。其中n!=123…n。 算法描述 n!可能很大,而计算机能表示的整数范围...

  • 蓝桥杯:数列特征--Python解法

    问题描述 给出n个数,找出这n个数的最大值,最小值,和。 输入格式 第一行为整数n,表示数的个数。 第二行有n个数...

  • 蓝桥杯:查找整数--Python解法

    问题描述 给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。 输入格式 第一行包含一个整数n。 第...

  • 蓝桥杯:回文数--Python解法

    问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。 输出格式 按从...

  • 蓝桥杯:压缩变换--Python解法

    问题描述: 小明最近在研究压缩算法。他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比。然而,...

  • 蓝桥杯:交换瓶子--Python解法

    问题描述: 有N个瓶子,编号 1 ~ N,放在架子上。比如有5个瓶子:2 1 3 5 4 要求每次拿起2个瓶子,交...

  • 蓝桥杯:饮料换购--Python解法

    问题描述: 乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环...

网友评论

      本文标题:蓝桥杯:huffumen树--Python解法

      本文链接:https://www.haomeiwen.com/subject/fycrgctx.html