蓝桥杯——Huffuman树

阅读 55

2022-02-04

题目来源:蓝桥杯基础练习
知识点:排序,循环次数

题目分析

不用想得太复杂,其实就是对数组排序,每次取出最小的两个数相加。然后在数组中删去这两个数,添加这两个数的和。那么每次就相当于数组元素少了一个(减去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)

0 0 举报