题解 | 哈夫曼树

哈夫曼树

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

#include <iostream>
#include <queue>
#include <functional>

using namespace std;

int main() {
    int n=0;
    priority_queue<int, vector<int>, std::greater<int>> q;
    while(cin>>n){
        for(int i=0; i<n; i++){
            int temp;
            cin >> temp;
            q.push(temp);
        }
        int res = 0;
        while(q.size()>1){
            int x = q.top();
            q.pop();
            int y = q.top();
            q.pop();
            res += x+y;
            q.push(x+y);
        }
        cout << res << endl;
    }
}


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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