সমস্যা বিবৃতি
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