ustbfym 2019-12-08
/*有几堆水果。每次你把两堆东西移到一起,形成更大的一堆。每个动作消耗的能量是两堆水果的总重量。如何把所有的水果堆在一起,消耗最少的能量?*/
以上是题目,该题首先要读懂题目,每次移到一起以后都要将数组重新排序再次移动。
#include<stdio.h>
int main(){
int t, n, m = 0;
int i = 0, j = 0;
scanf("%d",&n);
int sum[n];
for(i = 0; i<n;i++){
scanf("%d",&sum[i]);
}
for(i = 0; i<n-1;i++){
for(j = 0; j<n-i-1; j++){
if(sum[j]>sum[j+1]){
t = sum[j];
sum[j] = sum[j+1];
sum[j+1] = t;
}
}
}
for(i = 1;i<n;++i){
sum[i] += sum[i-1];
m += sum[i];
for(j = i+1;j<n&&sum[j]<sum[j-1];++j){
t = sum[j-1];
sum[j-1] = sum[j];
sum[j] = t;
}
}
printf("%d",m);
return 0;
}