合并果子

题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2127&cid=1184

哈夫曼树。

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 int a[11000];
 5 
 6 int cmp(const void *a,const void *b)
 7 {
 8     return *(int *)a-*(int *)b;
 9 }
10 int main()
11 {
12     int n,i,sum=0,t,j;
13     scanf("%d",&n);
14     for(i=0; i<n; i++)
15     scanf("%d",&a[i]);
16     qsort(a,n,sizeof(a[0]),cmp);
17 
18     for(i=1; i<n; i++)
19     {
20         a[i]+=a[i-1];
21         t=a[i];
22         sum+=a[i];
23         for(j=i+1; j<n; j++)
24         {
25             if(a[j]<t)
26             a[j-1]=a[j];
27             else
28             break;
29         }
30         a[j-1]=t;
31     }
32     printf("%d
",sum);
33 }
原文地址:https://www.cnblogs.com/bfshm/p/3161683.html