题解 | #哈夫曼树#

哈夫曼树

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


全部评论

相关推荐

自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
仁者伍敌:牛子这些人还会点一个自动回复,boss都不带回复的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务