九度OJ-1172-哈夫曼树
来源:互联网 发布:阿里云服务器个人备案 编辑:程序博客网 时间:2024/06/07 02:27
由于建立的哈夫曼树不唯一,所以机试多考察哈夫曼树的带权路径长度和,如此题。此问题最终转化为利用堆模拟建树过程,求出非叶节点的权值和(=该哈夫曼树的带权路径长度和)。(无需作出哈夫曼树的具体结构体)
收获如下:
①关于哈夫曼树:该树非叶节点的权值和=该哈夫曼树的带权路径长度和
②关于堆排序:堆排序建堆O(n*logn),初始堆完成后,每次重新调整只需O(logn)(树深),故是效率很高的动态排序算法,以后动态排序要想到它(具体分析见王道堆排序)
③关于堆模板:即“优先队列”,在<queue>头文件中
1.大根堆:
priority_queue<类型> Q;
2.小根堆
priority_queue<类型,vector<类型>,greater<类型> >//(此处“> >”必须要有空格)(小根堆或可使用该类型比较运算符重载来实现)
3.其大部分函数与stack模板一致
- 题目描述:
哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。
- 输入:
输入有多组数据。
每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。
- 输出:
输出权值。
- 样例输入:
5 1 2 2 5 9
- 样例输出:
37
- 来源:
- 2010年北京邮电大学计算机研究生机试真题
- 答疑:
- 解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7895-1-1.html
#include <iostream> #include <queue>using namespace std; int main(){ int n; int k,temp,sum; priority_queue<int,vector<int>,greater<int> > h; while (cin>>n){ //initiate sum=0; while (!h.empty()){ h.pop(); } //input for (int i=0;i<n;i++){ cin>>k; h.push(k); } //process for (int i=0;i<n-1;i++){ temp=h.top(); h.pop(); temp+=h.top(); h.pop(); sum+=temp; h.push(temp); } //output cout<<sum<<endl; } return true;}/************************************************************** Problem: 1172 User: bit3125 Language: C++ Result: Accepted Time:10 ms Memory:1520 kb****************************************************************/
0 0
- 九度OJ-1172-哈夫曼树
- 九度OJ-1172 哈夫曼树
- 九度OJ - 1172 - 哈夫曼树
- 九度OJ-1172-哈夫曼树
- 哈夫曼树--九度OJ-1172
- 九度 oj 1172
- 九度OJ 1172
- 九度OJ-1172-哈夫曼树
- 九度OJ 1172:哈夫曼树 (贪心)
- ACM--哈夫曼树--九度OJ-1172
- 九度OJ题目1172:哈夫曼树
- 九度OJ题目1172:哈夫曼树
- 九度OJ——1172哈夫曼树
- 【九度OJ-1172】 哈夫曼数
- 九度OJ 1172 哈夫曼树(不用建树)
- 九度OJ 1172 哈夫曼树(不用建树)
- 九度OJ 题目1172:哈夫曼树&题目1107:搬水果
- 【九度OJ】题目1172:哈夫曼树 解题报告
- [Leetcode] 70. Climbing Stairs 解题报告
- PHP弱类型导致的安全问题--md5
- Android studio jni 生成 头文件
- [Leetcode] 71. Simplify Path 解题报告
- PHP弱类型--strcmp()
- 九度OJ-1172-哈夫曼树
- 748UVa迷宫探索
- UVa 1589 象棋 xiangqi 问题。 判断是否将军致死。
- [Leetcode] 72. Edit Distance 解题报告
- 构建本地vim编程环境
- iOS 沙盒文件路径获取
- Effective Java 读书笔记——39:必要时进行保护性拷贝
- [Leetcode] 73. Set Matrix Zeroes 解题报告
- 区间找点