题解 | #哈夫曼树#

哈夫曼树

https://www.nowcoder.com/practice/162753046d5f47c7aac01a5b2fcda155

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define len 1009
#define maxint 1<<31-1

int l,r;
int list[len];

void initial_list(){
    l = 0;
    r = 0;
}

void push_back(int x){
    list[r++] = x;
}

int pop_front(){
    return list[l++];
}

int cmp(const void*s1,const void*s2){
    int a1 = *(int*)s1;
    int a2 = *(int*)s2;
    return a1-a2;
}

void list_sort(){
    qsort(list+l,r-l,sizeof(int),cmp);
}

int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        initial_list();
        for(int i = 0;i<n;i++){
            int x;
            scanf("%d",&x);
            push_back(x);
        }
        int res = 0;
        while(r-l!=1){
            list_sort();
            int a = pop_front();
            int b = pop_front();
            int temp = a+b;
            res+=temp;
            push_back(temp);
        }
        printf("%d\n",res);
    }
}

全部评论

相关推荐

09-25 10:34
东北大学 Java
多面手的小八想要自然醒:所以读这么多年到头来成为时代车轮底下的一粒尘
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务