সমস্যা বিবৃতি
একটি অ্যারের দেওয়া, আমাদের অ্যারের মানগুলি থেকে ত্রিভুজের সর্বোচ্চ উচ্চতা খুঁজে বের করতে হবে যা আমরা তৈরি করতে পারি, যেমন প্রতিটি (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