哈夫曼树---POJ3253

Posted 上进小青年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了哈夫曼树---POJ3253相关的知识,希望对你有一定的参考价值。

http://poj.org/problem?id=3253

这就是 最典型的哈夫曼树的题型,我们就根据这道题学习一下哈夫曼树

 

 

 这是最开始我们把21据下来之后我们据下8,然后再据下5得到34,可以看出13被用到2次,8被用到1次13*2+8=34。

 

这幅图片,我们先据下21,再据下5,再据下8得到34,即16*2+5=37。

所以,对于这道题,我们运用贪心的思想和哈夫曼树

 1 #include<queue>
 2 #include<stdio.h>
 3 using namespace std;
 4 int main()
 5 {
 6     long long int sum;
 7     int i,n,t,a,b;
 8     while(~scanf("%d",&n))
 9     {
10         priority_queue<int,vector<int>,greater<int> >q;
11         for(i=0; i<n; i++)
12         {
13             scanf("%d",&t);
14             q.push(t);
15         }
16         sum=0;
17         if(q.size()==1)
18         {
19             a=q.top();
20             sum+=a;
21             q.pop();
22         }
23         while(q.size()>1)
24         {
25             a=q.top();
26             q.pop();
27             b=q.top();
28             q.pop();
29             t=a+b;
30             sum+=t;
31             q.push(t);
32         }
33         printf("%lld\\n",sum);
34     }
35     return 0;
36 }

 

以上是关于哈夫曼树---POJ3253的主要内容,如果未能解决你的问题,请参考以下文章

poj-3253 Fence Repair[霍夫曼树]

poj 3253 Fence Repair 贪心

poj 3253 贪心+优先队列哈夫曼思想

POJ - 3253 Fence Repair(贪心)

POJ 3253 Fence Repair (贪心)

霍夫曼树poj 1339 poker card game