关闭

BIT 1020 小白鼠--赫夫曼树(最优二叉树)

标签: 赫夫曼树最优二叉树
501人阅读 评论(0) 收藏 举报
分类:

http://acm.bit.edu.cn/mod/programming/view.php?a=506

经教主的指导+自己的研究,终于搞懂这道题了。。。

赫夫曼树(最优二叉树)

构造 最优二叉树,求树的带全路径长度


#include<stdio.h>
#include<string.h>
#include<queue>
#include<functional>
using namespace std;

int main()
{
	int i,j,k;
	int t;
	scanf("%d",&t);
	priority_queue<double,vector<double>,greater<double> > q;  //注意和下面的写法,有个空格的区别,这么写就是对的
	//priority_queue<double,vector<double>,greater<double>> q;  这么写就编译不了。。
	while(t--)
	{
		int n;
		while(!q.empty())
			q.pop();
		scanf("%d",&n);
		for(i=0;i<n;i++)
		{
			double temp;
			scanf("%lf",&temp);
			q.push(temp);
		}
		double ans=0;
		while(q.size()!=1)
		{
			double t1,t2;
			t1=q.top(),q.pop();
			t2=q.top(),q.pop();
			ans+=(t1+t2);
			q.push(t1+t2);
		}
		if(n==1)
			printf("%.2lf\n",q.top());
		else
			printf("%.2lf\n",ans);
	}
}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:103456次
    • 积分:3075
    • 等级:
    • 排名:第11240名
    • 原创:212篇
    • 转载:21篇
    • 译文:0篇
    • 评论:1条
    最新评论