题目来源:蓝桥杯基础练习
知识点:排序,循环次数
题目分析
不用想得太复杂,其实就是对数组排序,每次取出最小的两个数相加。然后在数组中删去这两个数,添加这两个数的和。那么每次就相当于数组元素少了一个(减去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;
}