九度OJ 1172:哈夫曼树 (贪心)
来源:互联网 发布:韦德2014总决赛数据 编辑:程序博客网 时间:2024/05/21 22:11
- 题目描述:
哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。
- 输入:
输入有多组数据。
每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。
- 输出:
输出权值。
- 样例输入:
5 1 2 2 5 9
- 样例输出:
37
- 来源:
- 2010年北京邮电大学计算机研究生机试真题
思路:
经典贪心算法。每次剔除最小的两个数相加然后插入排序数组,并累加这个和。最后累加的和就是总权值。
代码:
#include <stdio.h>#include <stdlib.h> #define N 1000 int cmp(const void *a, const void *b){ return *(int *)a - *(int *)b;} int main(void){ int n, i; int a[N]; int sum; while (scanf("%d", &n) != EOF) { sum = 0; for(i=0; i<n; i++) scanf("%d", &a[i]); for(i=0; i<n-1; i++) { qsort(a+i, n-i, sizeof(a[0]), cmp); a[i+1] += a[i]; sum += a[i+1]; } printf("%d\n", sum); } return 0;}/************************************************************** Problem: 1172 User: liangrx06 Language: C Result: Accepted Time:30 ms Memory:912 kb****************************************************************/
0 0
- 九度OJ 1172:哈夫曼树 (贪心)
- 九度OJ 1433 FatMouse(贪心)
- 【九度OJ】1038【贪心】
- 九度oj 1437 贪心
- 九度OJ 1107:搬水果 (贪心)
- 九度OJ 1082 代理服务器 -- 贪心算法
- 九度OJ 1433 FatMouse -- 贪心算法
- 九度OJ 1433 贪心算法
- 九度OJ-1172-哈夫曼树
- 九度OJ-1172 哈夫曼树
- 九度OJ - 1172 - 哈夫曼树
- 九度OJ-1172-哈夫曼树
- 哈夫曼树--九度OJ-1172
- 九度 oj 1172
- 九度OJ 1172
- 九度OJ 1172 哈夫曼树(不用建树)
- 九度OJ 1172 哈夫曼树(不用建树)
- 九度OJ-1172-哈夫曼树
- java中的方法思路理清
- Openstack kvm win7镜像制作(转)
- IP对象InetAddress
- 基础篇(九) Intent(意图)
- 关于DDoS攻击的认知误区,你中枪了么?
- 九度OJ 1172:哈夫曼树 (贪心)
- 结构体对齐打包方式
- Git 是什么?5分钟入门Git
- GAP软件的使用(20150514、20151002、20151004、20151012)
- View的完整显示过程
- asp.net中通过form表单submit提交到后台的实例
- block __weak & strong self
- unbuntu压缩与解压缩命令
- MyEclipse 清理项目缓存的几大方法