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; }