解题思路:请看代码注释
注意事项:
参考代码:
#include<stdio.h>
#include<math.h>
typedef long long ll;
ll a[100010];//定义数组a,用于存储各结点的权值
int main()
{
int n,i;
scanf("%d",&n);//输入结点总数
for(i=1;i<=n;i++)//输入各结点权值
scanf("%lld",&a[i]);
int f=0,m=n;
while(m)//求总层数
{
m/=2;
f++;//统计层数
}
ll ma=-100000,f1,m1,p=1;
for(i=0;i<f;i++)
{
m1=0;//统计每层各结点权值之和
int j;
for(j=1;j<=pow(2,i);j++)//pow(2,i)表示每层结点的个数
{
m1+=a[p++];//p表示总结点中的第几个结点
if(p>n)
break;//所有结点遍历完成
}
if(m1>ma)
{
f1=i+1;//f1表示权值之和最大的层数。
ma=m1;
}
}
printf("%d\n",f1);
}
0.0分
0 人评分
Hello, world! (C语言代码)浏览:1202 |
大神老白 (C语言代码)浏览:645 |
C语言训练-阶乘和数* (C语言代码)-------- 呆板写法浏览:1362 |
P1000 (C语言代码)浏览:877 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:616 |
字符串比较 (C语言代码)浏览:685 |
1231题解(注意理解“输入多个测试实例”)浏览:789 |
青年歌手大奖赛_评委会打分 (C语言代码)浏览:2153 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:562 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:447 |