সমস্যা বিবৃতি
n ধনাত্মক উপাদানগুলির একটি বিন্যাস দেওয়া হলে আমাদের একটি সাবঅ্যারেতে সর্বাধিক এবং সর্বনিম্ন উপাদানগুলির সর্বনিম্ন সম্ভাব্য যোগফল খুঁজে বের করতে হবে যে সাবয়ারের আকার 2 এর সমান হওয়া উচিত৷
উদাহরণ
যদি arr[] ={10, 5, 15, 7, 2, 1, 3} হয় তাহলে আমরা যখন "2 + 1" যোগ করি তখন "max + min" এর যোগফল 3 হয়।
অ্যালগরিদম
- একটি সাব্যারেতে কোনো উপাদান যোগ করলে সর্বোচ্চ এবং সর্বনিম্ন যোগফল বাড়বে না।
- যেহেতু অ্যারেতে উপাদান যোগ করলে অ্যারের সর্বোচ্চ কখনই কমবে না। আমরা বড় উপাদান যোগ করলেই এটি বৃদ্ধি পাবে। তাই দৈর্ঘ্য 2 আছে শুধুমাত্র সেইসব সাব্যারে বিবেচনা করা সর্বদাই সর্বোত্তম।
- অতএব দৈর্ঘ্য 2 এর সমস্ত সাব্যারে বিবেচনা করুন এবং যোগফল তুলনা করুন এবং সর্বনিম্ন একটি নিন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int getMaxSum(int *arr, int n) {
if (n < 2) {
return -1;
}
int result = arr[0] + arr[1];
for (int i = 1; i + 1 < n; ++i) {
result = min(result, (arr[i] + arr[i + 1]));
}
return result;
}
int main() {
int arr[] = {10, 5, 15, 7, 2, 1, 3};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Maximum sum = " << getMaxSum(arr, n) << endl;
return 0;
} আপনি যখন উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করবেন। এটি নিম্নলিখিত আউটপুট −
তৈরি করেআউটপুট
Maximum sum = 3