题目来源:《挑战程序设计竞赛》2.2.4
#if 1
#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
#define MAXN 100
int minnum, nminnum, sum, ans = 0;
int n;
int LEN[MAXN];
int solve()
{
priority_queue<int, vector<int>, greater<int> > que;
for (int i = 0; i < n; i++) que.push(LEN[i]);
while (que.size() > 1)
{
minnum = que.top();
que.pop();
nminnum = que.top();
que.pop();
sum = minnum + nminnum;
que.push(sum);
ans += sum;
}
return ans;
}
int main()
{
cout << "请输入木板数" << endl;
cin >> n;
cout << "请输入木板长度" << endl;
for (int i = 0; i < n; i++)
{
cin >> LEN[i];
}
//sort(LEN, LEN + n);
cout << solve() << endl;
return 0;
}
#endif