题解 | #哈夫曼树#
哈夫曼树
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); } }