题解 | #哈夫曼树#

哈夫曼树

http://www.nowcoder.com/questionTerminal/162753046d5f47c7aac01a5b2fcda155

#include "cstdio"
#include "queue"
using namespace std;
int main(){
    priority_queue<int> pqueue;//存入相反数
    int n;
    scanf("%d",&n);
    for (int i = 0; i < n; ++i) {
        int leaf;
        scanf("%d",&leaf);
        pqueue.push(-leaf);

    }
    int res=0;
    while (pqueue.size()>1){
        int leaf1 = pqueue.top();
        pqueue.pop();
        int leaf2 = pqueue.top();
        pqueue.pop();
        //计算带权路径和
        res = res + leaf1+leaf2;
        //把构成的新子树插入原集合;
        pqueue.push(leaf1+leaf2);

    }
    printf("%d\n",-res);
}
全部评论

相关推荐

11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
无敌虾孝子:喜欢爸爸还是喜欢妈妈
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务