9.8.1 哈夫曼树(建树思想)
上一节墓地最后一题合并果子的思想就是哈夫曼树建树思想
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
int main(){
priority_queue<int,vector<int>,greater<int> > q;//greater小顶堆 小的优先级高
int n,t,x,y,sum;
while(cin>>n){
sum=0;
for(int i=0;i<n;i++){
cin>>t;
q.push(t);
}
while(q.size()>1){
x=q.top();q.pop();
y=q.top();q.pop();
q.push(x+y);
sum+=x+y;
}
cout<<sum<<endl;
}
return 0;
}
9.8.2哈夫曼编码
eg:样例
https://blog.csdn.net/hza419763578/article/details/89419755