30-题目1172:哈夫曼树
2016-03-03 20:40
176 查看
http://ac.jobdu.com/problem.php?pid=1172
题目描述:哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。
输入:
输入有多组数据。
每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。
输出:
输出权值。
我觉得建立哈夫曼树太麻烦了。。。。要求深度,而且还要建立链表。。。所以我看到别人的代码,求解带权路径长度居然是用所有非叶子结点的和!!!哈夫曼树的带权路径长度怎么这样求,我不知道对不对,但是这个例子是对的~~~~~
#include<stdio.h> #include<string.h> #include<fstream> #include<algorithm> #include<iostream> using namespace std; int main(){ int n, i; ifstream cin("data.txt"); while (cin >> n) { int *arr = new int ; for (i = 0; i < n; i++) cin >> arr[i]; int sum = 0; for (i = 1; i < n; i++) { sort(arr + i - 1, arr + n); //将arr[i-1],arr[n-1]递增排序 sum += arr[i - 1] + arr[i]; arr[i] = arr[i - 1] + arr[i]; } cout << sum << endl; } system("pause"); return 0; }
相关文章推荐
- 模仿modal效果
- IE中的userData
- 如何在终端中打印带颜色的文本
- Unable to simultaneously satisfy constraints.
- 深入浅出Block的方方面面
- hibernate笔记--基于主键的单(双)向的一对一映射关系
- 通过binlog来备份 恢复
- leetcode之Combination Sum
- eclipse如何快速查找某个类
- 深夜学网页(4)——HTML(4)
- SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-008-带参数的ADVICE
- UICollectionView-集合视图(理论篇)
- 插入排序
- keepalived 安装
- @property总结
- Unicode原理
- MFC(一):win32创建一个最简单的窗口
- WinCE项目应用之RM905a+活度计远程检定方法研究
- linux rpm包解压
- python caffe libcaffe.so.1.0.0-rc3: cannot open shared object file