计算哈夫曼树的带权路径长度

Posted by Kalos Aner on December 20, 2020

C语言计算哈夫曼树的带权路径长度:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a,const void *b)
{
    return *(int*)a-*(int *)b;
}
int main()
{
    int n,W[1001];
    while(scanf("%d",&n)!=EOF) //n为权值个数
    {
        for(int i=1;i<=n;i++)	//n个权值
            scanf("%d",&W[i]);
        int Result=0;
        for(int i=2;i<=n;i++){
           qsort(W+i-1,n-i+2,sizeof(W[0]),cmp); //C语言快速排序函数
           Result+=W[i]+W[i-1];
           W[i]=W[i]+W[i-1];
            
        }
        printf("%d\n",Result);
    }
    return 0;
}