7,8,9,10 RE,前面的都过了
查看原帖
7,8,9,10 RE,前面的都过了
459320
QRZ2814514743楼主2024/8/29 19:00
#include <bits/stdc++.h>
using namespace std;
#define LL long long


int main() {
	LL All[100001];//All是存储所有二叉树里面的数字
	LL Al[5000];//Al是存储每个权里面相加的和

	for (LL i = 0; i < 5000; i++) {
		Al[i] = 0;
	}//初始化数组
	for (LL i = 0; i < 100001; i++) {
		All[i] = 0;
	}//初始化数组

	double n = 0;
	double N = 0;
	cin >> n;//输入有多少数字
	for (LL i = 0; i < n; i++) {
		cin >> All[i];
	}//输入数字
	Al[0] = All[0];
  //第一个数字直接存入第一个深度的位置
	n = n + 1;
  //最大深度+1,防止有数字没算上,反正全是0加上去也没问题
	N = log(n) / log(2) + 1;
  //用数字个数算出最多有几个深度
	for ( LL i = 1; i < N; i++) {
		for (LL j = 0; j < pow(2, i + 1) - pow(2, i); j++) {
			Al[i] += All[long(pow(2, i) ) + j - 1];//把每个相同深度的存进去
		}
	}
	LL max = -1;//最大值
	LL maxn = -1;//最大值的深度
	for (LL i = 0; i < N; i++) {
		if (max < Al[i]) {
			max = Al[i];
			maxn = i ;
		}
	}
	printf("%d", maxn + 1);
	return 0;
}

前面的都过了,7,8,9,10RE了不知道是哪里的问题,注释写在里面了应该比较好理解

2024/8/29 19:00
加载中...