首页 > 编程语言 > 详细

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

时间:2019-12-08 00:44:22      阅读:149      评论:0      收藏:0      [点我收藏+]

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

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

 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 }

 

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

原文:https://www.cnblogs.com/wleaf/p/12004005.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!