समस्या कथन
एक ऐरे दिया गया है, हमें त्रिभुज की अधिकतम ऊंचाई ढूंढनी है जिसे हम ऐरे मानों से बना सकते हैं जैसे कि प्रत्येक (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