博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
哈夫曼树
阅读量:4107 次
发布时间:2019-05-25

本文共 511 字,大约阅读时间需要 1 分钟。

哈夫曼树概念:

#include
#include
using namespace std;priority_queue
,greater
> Q;int main(){ int n; while(scanf("%d",&n)!=EOF){ while(Q.empty()==false) Q.pop();//清空堆中元素 for(int i=1;i<=n;i++){ //输入n个叶子节点权值 int x; scanf("%d",&x); Q.push(x); //将权值放入堆中 } int ans=0; //保存答案 while(Q.size()>1){ //当堆中元素大于1 int a=Q.top(); Q.pop(); int b=Q.top(); Q.pop(); //取出堆中两个最小元素 ans+=a+b; Q.push(a+b);//将新生成的节点权值放入堆中 } printf("%d\n",ans); } return 0;}

 

转载地址:http://bnssi.baihongyu.com/

你可能感兴趣的文章
Windows音频编程:Win32 Wave API 的使用
查看>>
基于WaveX低级音频函数的实时语音通信
查看>>
回调函数调用类成员函数的方法
查看>>
waveOutReset锁死问题
查看>>
MFC命令消息(WM_COMMAND)的传送路径
查看>>
改变工具栏按钮状态的方法
查看>>
改变菜单勾选状态的方法
查看>>
MFC程序的启动过程与相关函数的执行顺序
查看>>
以类的成员函数作为Windows callback函数
查看>>
MFC中视图的全屏显示
查看>>
MFC中右键弹出菜单
查看>>
MFC工具栏按钮下拉
查看>>
MFC消息映射及消息处理函数原型
查看>>
Serializable的必要条件
查看>>
C++引用与指针的区别
查看>>
虚函数的性质
查看>>
Flynn分类法
查看>>
指针引用
查看>>
NOR flash和NAND flash的区别
查看>>
ubuntu使用经验总结
查看>>