欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Uva10954 Add All(哈夫曼编码问题)

程序员文章站 2022-06-02 11:50:00
...

Uva10954 Add All(哈夫曼编码问题)
Uva10954 Add All(哈夫曼编码问题)

#include<iostream>
#include <math.h>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;
#include<queue>
priority_queue<int, vector<int>, greater<int> > q;//优先队列,按照指定排列队列大小
int main() {
	int n,ctn,num=0;
	int x, y;
	while (cin >> n && n) {
		num = 0;
		while (!q.empty()) q.pop();
		for (int i = 0; i < n; i++) {
			cin >> ctn;
			q.push(ctn);
		}
		for (int i = 0; i < n-1; i++) {
			x = q.top(); q.pop();
			y = q.top(); q.pop();
			q.push(x + y);
			num += x + y;
			
		}
		cout << num << endl;
	}
}