C语言合并果子-贪心算法

时间:2022-09-12 19:14:22

/*有几堆水果。每次你把两堆东西移到一起,形成更大的一堆。每个动作消耗的能量是两堆水果的总重量。如何把所有的水果堆在一起,消耗最少的能量?*/

以上是题目,该题首先要读懂题目,每次移到一起以后都要将数组重新排序再次移动。

 #include<stdio.h>

 int main(){

     int t, n, m = ;
int i = , j = ;
scanf("%d",&n);
int sum[n]; for(i = ; i<n;i++){
scanf("%d",&sum[i]);
} for(i = ; i<n-;i++){
for(j = ; j<n-i-; j++){
if(sum[j]>sum[j+]){
t = sum[j];
sum[j] = sum[j+];
sum[j+] = t;
}
}
}
for(i = ;i<n;++i){
sum[i] += sum[i-];
m += sum[i];
for(j = i+;j<n&&sum[j]<sum[j-];++j){
t = sum[j-];
sum[j-] = sum[j];
sum[j] = t;
}
} printf("%d",m); return ;
}