文章

145

粉丝

143

获赞

21

访问

37.9k

头像
哈夫曼树 题解:C题解简单思路
P1382 北京邮电大学/兰州大学2019年机试
发布于2024年2月14日 20:40
阅读数 612

 先排序,最小的两个数在前面,weight权值为非叶子节点值的总和

#include <stdio.h>

void Sort(int a[],int n)
{
	int i,j,t;
	for(i = 0; i < n-1; i++)
		for(j = 1; j < n-i; j++)
			if(a[j] < a[j-1])
			{
				t = a[j];
				a[j] = a[j-1];
				a[j-1] = t;
			}
}

int main()
{
	int t,i,n,a[1000],weight;
	while(scanf("%d",&n) != EOF)
	{
		weight = 0;
		for(i = 0; i < n; i++)
			scanf("%d",&a[i]);
		while(n > 1)
		{
			Sort(a,n);//从小到大排序
			a[0] = a[0]+a[1];
			a[1] = a[n-1];
			weight+=a[0];
			n--;
		}
		printf("%d\n",weight);
	}
	return 0;
}

 

登录查看完整内容


登录后发布评论

2 条评论
08193003
2024年3月6日 10:08

用自带的sort函数 可以替代你的Sort吗?

为什么我这边数据只有60%正确?

 

赞(0)

小王桐学 : 回复 08193003: 我用的是C,C++可以

2024年3月6日 11:15