0
点赞
收藏
分享

微信扫一扫

蓝桥杯——Huffuman树

冶炼厂小练 2022-02-04 阅读 55
题目来源:蓝桥杯基础练习
知识点:排序,循环次数

题目分析

不用想得太复杂,其实就是对数组排序,每次取出最小的两个数相加。然后在数组中删去这两个数,添加这两个数的和。那么每次就相当于数组元素少了一个(减去2,加上1),总的循环次数就是(n - 1)次。

代码

#include <bits/stdc++.h>
using namespace std;

int main() {
	int n;
	cin >> n;
	
	int* num = new int[n]();
	for(int i=0; i<n; i++) {
		cin >> num[i];
	} 
	
	int ans = 0;
	int p = 0;
	
	for(int i=0; i<n-1; i++) {
		sort(num + p, num + n);
		ans += num[p] + num[p+1];
		num[p+1] = num[p] + num[p+1];
		p = p + 1;
	} 
	
	cout << ans << endl;
	
	delete[] num;
	return 0;
}
举报

相关推荐

0 条评论