解题思路:请看代码注释
注意事项:
参考代码:
#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 人评分
IP判断 (C语言代码)浏览:992 |
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:702 |
川哥的吩咐 (C++代码)浏览:1076 |
【亲和数】 (C语言代码)浏览:530 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:568 |
淘淘的名单 (C语言代码)浏览:1167 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:524 |
星期判断机 (C语言代码)浏览:892 |
循环入门练习6 (C语言代码)浏览:1058 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:650 |