#include <stdio.h>
int cost=0;
int a[101]={-1},n;
int he(int *a);
void suo(int *a,int e);
int min(int*a);
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
while(n>1)
{
cost+=he(a);
}
printf("%d",cost);
return 0;
}
void suo(int *a,int e)
{
for(int i=e;i<n;i++)
{
a[i]=a[i+1];
}
n--;
return;
}
int min(int *a)
{
int e=0;
for(int i=0;i<n;i++)
{
if(a[i]<a[e])
{
e=i;
}
}
return e;
}
int he(int *a)
{
int x=0,y=0;
x=a[min(a)];
suo(a,min(a));
y=a[min(a)];
for(int i=0;i<n;i++)
{
if(a[i]==y)
{
a[i]=x+y;
break;//特别重要
}
}
return (x+y);
}
Huffuman树(蓝桥杯)
最新推荐文章于 2025-05-13 15:09:13 发布