समस्या कथन
एक सरणी को देखते हुए, हमें त्रिभुज की अधिकतम ऊंचाई खोजने की आवश्यकता है जिसे हम सरणी मानों से बना सकते हैं जैसे कि प्रत्येक (i+1) th स्तर में पिछले स्तर से बड़ी राशि वाले अधिक तत्व होते हैं।
उदाहरण
यदि इनपुट ऐरे {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