题解 | #哈夫曼树#

哈夫曼树

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-14 17:23
门头沟学院
故事和酒66:所以说副业很重要,程序员干到40岁,再怎么也赚300万了,吃吃利息也够活下去
点赞 评论 收藏
分享
投递北京经纬恒润科技股份有限公司等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务