文章
145
粉丝
217
获赞
21
访问
84.4k
先排序,最小的两个数在前面,weight权值为非叶子节点值的总和
#include <stdio.h>
void Sort(int a[],int n)
{
int i,j,t;
for(i = 0; i < n-1; i++)
for(j = 1; j < n-i; j++)
if(a[j] < a[j-1])
{
t = a[j];
a[j] = a[j-1];
a[j-1] = t;
}
}
int main()
{
int t,i,n,a[1000],weight;
while(scanf("%d",&n) != EOF)
{
weight = 0;
for(i = 0; i < n; i++)
scanf("%d",&a[i]);
while(n > 1)
{
Sort(a,n);//从小到大排序
a[0] = a[0]+a[1];
a[1] = a[n-1];
weight+=a[0];
n--;
}
printf("%d\n",weight);
}
return 0;
}
登录后发布评论
用自带的sort函数 可以替代你的Sort吗?
为什么我这边数据只有60%正确?