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