当前位置:   article > 正文

【考研每日一题25】哈夫曼树(C++)_7-2 哈夫曼树 分数 25 作者 李廷元 单位 中国民用航空飞行学院 哈夫曼树,第一行输

7-2 哈夫曼树 分数 25 作者 李廷元 单位 中国民用航空飞行学院 哈夫曼树,第一行输

原题地址:牛客网

题目描述:

哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。

输入描述:

输入有多组数据。
每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。

输出描述:

输出权值。

示例1

输入

5  
1 2 2 5 9

输出

37

分析:

一道哈夫曼树签到题。

代码:

  1. #include<iostream>
  2. #include<vector>
  3. #include<cmath>
  4. #include<queue>
  5. using namespace std;
  6. int main()
  7. {
  8. int n;
  9. while(cin>>n)
  10. {
  11. int a;
  12. priority_queue<int,vector<int>,greater<int> >p;
  13. for(int i=0;i<n;i++)
  14. {
  15. cin>>a;
  16. p.push(a);
  17. }
  18. int m1,m2;
  19. int sum=0;
  20. while(p.size()>1)
  21. {
  22. m1=p.top();
  23. p.pop();
  24. m2=p.top();
  25. p.pop();
  26. sum=sum+m1+m2;
  27. p.push(m1+m2);
  28. }
  29. cout<<sum<<endl;
  30. }
  31. return 0;
  32. }

2020.4.13

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/703015
推荐阅读
相关标签
  

闽ICP备14008679号