题解 | #哈夫曼树#
哈夫曼树
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);
}
}
查看3道真题和解析
