题解 | #哈夫曼树#

哈夫曼树

https://www.nowcoder.com/practice/162753046d5f47c7aac01a5b2fcda155

/*本题与搬水果题异曲同工,均利用小顶堆实现*/

#include <iostream>
#include <queue>
using namespace std;
int main(){
    priority_queue< int , vector<int> , greater<int> > min_heap;
    int n=0;
    int weight=0;
    int res=0;
    int first=0,second=0;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>weight;
        min_heap.push(weight);
    }
    while(min_heap.size()!=1){
        first=min_heap.top();
        min_heap.pop();
        second=min_heap.top();
        min_heap.pop();
        res+=(first+second);
        min_heap.push(first+second);
    }
    cout<<res<<endl;
    return 0;
}
关于哈夫曼树:详见王道机试P168


全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:28
点赞 评论 收藏
分享
10-24 13:36
门头沟学院 Java
Zzzzoooo:更新:今天下午有hr联系我去不去客户端,拒了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务