C ++中数组值的三角形排列的最大高度
问题陈述
给定一个数组,我们需要从数组值中找到可以形成的三角形的最大高度,以使第(i+1)个级别包含更多元素,而上一个级别的总和更大。
示例
如果输入数组为{40,100,20,30},则答案为2,如-
我们可以在金字塔的最下层有100和20,在金字塔的上层有40或30
算法
我们的解决方案仅在于以下逻辑:如果我们的金字塔具有最大可能的高度h,则(h*(h+1))/2个元素必须存在于数组中
示例
#include <bits/stdc++.h>
using namespace std;
int getMaximumHeight(int *arr, int n) {
int result = 1;
for (int i = 1; i <= n; ++i) {
long long y = (i * (i + 1)) / 2;
if (y < n) {
result = i;
} else {
break;
}
}
return result;
}
int main() {
int arr[] = {40, 100, 20, 30};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Result = " << getMaximumHeight(arr, n) << endl;
return 0;
}输出结果
当您编译并执行上述程序时。它产生以下输出-
Result = 2
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短