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


本题任务:
            对于给定的一个数列,现在请你求出用该数列构造Huffman树的总费用,构造示例参考下图。

解题思路:
            对于这一题,我们可以采用qsort函数进行排序,并设计精简操作代码即可。


参考代码:

 #include<stdio.h>
#include<stdlib.h> int compare (const void * a, const void * b) //small-> big
{
return *((int*)a)-*((int*)b);
}
int main(){
int num,i;
scanf("%d",&num);
int* numlist=(int*)malloc(sizeof(int)*num);
for(i=;i<num;i++)
scanf("%d",&numlist[i]);
int sum=,temp;
while(num>)
{
qsort(numlist,num,sizeof(int),compare); //SORT
temp=numlist[]+numlist[];
sum+=temp;//Two Small Number Add
numlist=numlist+;
*numlist=temp;
num--;
}
printf("%d",sum);
return ;
}

算法:求 Huffuman树 构造费用的更多相关文章

  1. 基础练习 Huffuman树

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

  2. C语言 · Huffuman树

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

  3. 蓝桥杯基础练习 Huffuman树

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

  4. Java实现 蓝桥杯VIP 基础练习 Huffuman树

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

  5. 【CF280D】 k-Maximum Subsequence Sum ,线段树模拟费用流

    昨天考试被教育了一波.为了学习一下\(T3\)的科技,我就找到了这个远古时期的\(cf\)题(虽然最后\(T3\)还是不会写吧\(QAQ\)) 顾名思义,这个题目其实可以建成一个费用流的模型.我们用流 ...

  6. [算法]从Trie树(字典树)谈到后缀树

    我是好文章的搬运工,原文来自博客园,博主July_,地址:http://www.cnblogs.com/v-July-v/archive/2011/10/22/2316412.html 从Trie树( ...

  7. POJ 1986 Distance Queries (Tarjan算法求最近公共祖先)

    题目链接 Description Farmer John's cows refused to run in his marathon since he chose a path much too lo ...

  8. tarjan算法求LCA

    tarjan算法求LCA LCA(Least Common Ancestors)的意思是最近公共祖先,即在一棵树中,找出两节点最近的公共祖先. 这里我们使用tarjan算法离线算法解决这个问题. 离线 ...

  9. POJ-2195 Going Home---KM算法求最小权值匹配(存负边)

    题目链接: https://vjudge.net/problem/POJ-2195 题目大意: 给定一个N*M的地图,地图上有若干个man和house,且man与house的数量一致.man每移动一格 ...

随机推荐

  1. where子句的具体含义

    今天同学让我帮他调代码,下面是出错的那句: txtSQL= "select * from student_Info where UserID='" & cboUserID. ...

  2. 使用jcrop进行头像剪切

    http://www.cnblogs.com/chenssy/archive/2013/05/18/3084985.html http://code.ciaoca.com/jquery/jcrop/ ...

  3. [AngularJS] Services, Factories, and Providers -- Service vs Factory

    Creating a Service: Before actual create an angular service, first create a constructor in Javascrip ...

  4. Cross-origin resource sharing--reference

    Cross-origin resource sharing (CORS) is a mechanism that allows many resources (e.g., fonts, JavaScr ...

  5. 0x05: post 守护进程(deamon) json 任务调度

    python 签名 post #coding:utf-8 import urllib,urllib2 url='http://wtf.thinkphp.com/index.php?m=&c=t ...

  6. 简单竖向Tab选项卡

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  7. CriticalFinalizerObject的作用

    CriticalFinalizerObject 在从 CriticalFinalizerObject 类派生的类中,公共语言运行库 (CLR) 保证所有关键终止代码都有机会执行, 即使是在 CLR 强 ...

  8. 2.Android Studio系列教程2——基本设置与运行

    原文链接:http://stormzhang.com/devtools/2014/11/28/android-studio-tutorial2/   一.项目结构   二.Android Studio ...

  9. LayoutInflater.inflate() 参数研究

    参考连接:http://blog.csdn.net/lovexieyuan520/article/details/9036673 http://www.2cto.com/kf/201407/31305 ...

  10. [linux常用命令]查看当前文件夹或该文件夹下文件(夹)的大小

    du -sh  *(星号表示当前所有文件夹)可以查看当前目录下各个文件夹的大小,-s表示只显示当前文件夹(不加-s你可以看到所有文件夹下的子文件夹的大小,太多了),-h表示以合适的大小查看.(可以用- ...