树-堆结构练习——合并果子之哈夫曼树
来源:互联网 发布:怎样加入淘宝网店 编辑:程序博客网 时间:2024/06/08 13:30
这道题的算法思想就是利用优先队列的自动排序功能来模拟哈夫曼编码,从而使得每次将元素插入队列后,使其前两个仍为整个队列的最小的两个。
代码如下:
#include <bits/stdc++.h>
using namespace std;
int main(){
int v[1000];
int n,i,a[20010];
scanf("%d",&n);
memset(v,0,sizeof(v));
for(i=0;i<n;i++)
scanf("%d",&a[i]);
priority_queue<int,vector<int>,greater<int> > q;/*优先队列,优先队列不是按照入队的顺序出队,而是按照队列中元素的优先权顺序
出队(默认为大者优先,也可以通过指定算子来指定自己的优先顺序)*/
for(i=0;i<n;i++)
q.push(a[i]);
int s=0;
while(!q.empty()){
int m=q.top();
q.pop();
if(!q.empty()){
int n=q.top();
q.pop();
int p=m+n;
q.push(p);
s=s+p;
}
}
printf("%d\n",s);
return 0;
}
1 0
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- 树-堆结构练习——合并果子之哈夫曼树
- OpenCV学习笔记(五):计算图像直方图
- Java transient关键字使用小记
- Spring AOP学习(一)
- js中hex16进制颜色转rgb(rgba)
- Linux系列之mysql安装(七)
- 树-堆结构练习——合并果子之哈夫曼树
- ubuntu安装编译环境
- 具有深度的iOS细节面试题
- Android中Activity执行restart过程中涉及到的四种数据存储恢复的方法(转)
- 在mysql 中查询时间最大的一条记录
- system("cls")的用法
- sdut oj3345 数据结构实验之二叉树六:哈夫曼编码
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之求二叉树后序遍历和层次遍历