#include <stdio.h>
#include <stdlib.h>
//哈尔曼树原理
int main()
{
int n,i,j,x[10000],t,sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&x[i]);
}
for(i=0;i<n;i++)//从小到大排序
{
for(j=i+1;j<n;j++)
{
if(x[i]>x[j])
{
t=x[i];
x[i]=x[j];
x[j]=t;
}
}
}
int k;
for(i=0,j=1;j<n;)
{
x[j]=x[i]+x[j];//取出最小的两个元素求和,和送回原来的序列
sum=sum+x[j];//加上倒数第i+1次锯木头所需的钱
for(k=j;k<n-1;k++)//加入新的元素,重新排列
{
if(x[k]>x[k+1])
{
t=x[k];
x[k]=x[k+1];
x[k+1]=t;
}
else
{
break;
}
}
i++;j++;
}
printf("%d\n",sum);//输出总费用
return 0;
}
修理牧场PTA
最新推荐文章于 2024-01-22 20:33:15 发布