/*有几堆水果。每次你把两堆东西移到一起,形成更大的一堆。每个动作消耗的能量是两堆水果的总重量。如何把所有的水果堆在一起,消耗最少的能量?*/
以上是题目,该题首先要读懂题目,每次移到一起以后都要将数组重新排序再次移动。
1 #include<stdio.h> 2 3 int main(){ 4 5 int t, n, m = 0; 6 int i = 0, j = 0; 7 scanf("%d",&n); 8 int sum[n]; 9 10 for(i = 0; i<n;i++){ 11 scanf("%d",&sum[i]); 12 } 13 14 for(i = 0; i<n-1;i++){ 15 for(j = 0; j<n-i-1; j++){ 16 if(sum[j]>sum[j+1]){ 17 t = sum[j]; 18 sum[j] = sum[j+1]; 19 sum[j+1] = t; 20 } 21 } 22 } 23 for(i = 1;i<n;++i){ 24 sum[i] += sum[i-1]; 25 m += sum[i]; 26 for(j = i+1;j<n&&sum[j]<sum[j-1];++j){ 27 t = sum[j-1]; 28 sum[j-1] = sum[j]; 29 sum[j] = t; 30 } 31 } 32 33 printf("%d",m); 34 35 return 0; 36 }
原文地址:https://www.cnblogs.com/wleaf/p/12004005.html
时间: 2024-11-16 09:26:39