C語言合並果子-貪心算法


/*有幾堆水果。每次你把兩堆東西移到一起,形成更大的一堆。每個動作消耗的能量是兩堆水果的總重量。如何把所有的水果堆在一起,消耗最少的能量?*/

以上是題目,該題首先要讀懂題目,每次移到一起以后都要將數組重新排序再次移動。

 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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM