完全二叉树的权值c++
时间: 2023-12-04 16:41:22 浏览: 97
根据提供的引用[1],以下是完全二叉树的权值C++代码的解释:
```c++
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int que[N];
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&que[i]);
}
long long num=2;//该层数字个数
long long sum=0;//该层权数之和
int du=1;//这是第几层
int ji=1;//和最大的层数是多少
int imax=que[1];//最大层的权值之和
for(int i=2;i<=n;){
sum=0;
int j;
du++;
for(j=i;j<i+num&&j<=n;j++){
sum+=que[j];
}
if(sum>imax){
ji=du;
imax=sum;
}
num*=2;
i=j;
}
cout<<ji<<endl;
return 0;
}
```
该代码的作用是计算完全二叉树的权值。具体来说,它首先读取输入的数字并将它们存储在一个数组中。然后,它计算每一层的权值之和,并找到权值之和最大的层数。最后,它输出最大权值的层数。
阅读全文