首页 > 其他 > 详细

UVa 10954 (Huffman 优先队列) Add All

时间:2015-04-13 20:19:10      阅读:242      评论:0      收藏:0      [点我收藏+]

直接用一个优先队列去模拟Huffman树的建立过程。

每次取优先队列前两个数,然后累加其和,把这个和在放入到优先队列中去。

技术分享
 1 #include <cstdio>
 2 #include <queue>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int n;
 8     while(scanf("%d", &n) == 1 && n)
 9     {
10         priority_queue<int, vector<int>, greater<int> > q;
11         int x, ans = 0;
12         for(int i = 0; i < n; i++) { scanf("%d", &x); q.push(x); }
13         for(int i = 0; i < n-1; i++)
14         {
15             int a = q.top(); q.pop();
16             int b = q.top(); q.pop();
17             ans += a + b;
18             q.push(a + b);
19         }
20         printf("%d\n", ans);
21     }
22 
23     return 0;
24 }
代码君

 

UVa 10954 (Huffman 优先队列) Add All

原文:http://www.cnblogs.com/AOQNRMGYXLMV/p/4422938.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!