কম্পিউটার টিউটোরিয়াল

সি++ প্রোগ্রাম: সাবঅ্যারেতে "max + min" এর ন্যূনতম মান


সমস্যা বিবরণ

n সংখ্যক পজিটিভ এলিমেন্টের একটি অ্যারে দেওয়া আছে। আমাদের কাজ হল সাবঅ্যারেতে max এবং min এলিমেন্টের যোগফলের ন্যূনতম সম্ভাব্য মান খুঁজে বের করা, শর্ত হল সাবঅ্যারের সাইজ কমপক্ষে ২ হতে হবে।

উদাহরণ

যদি arr[] = {10, 5, 15, 7, 2, 1, 3} হয়, তবে "max + min" এর যোগফল ৩ হবে যখন আমরা "2 + 1" করব।

অ্যালগরিদম

  • সাবঅ্যারেতে যেকোনো এলিমেন্ট যোগ করলে max এবং min-এর যোগফল বাড়বে না।
  • যেহেতু একটি অ্যারের max মান নতুন এলিমেন্ট যোগ করলে কখনো কমে না (শুধু বড় এলিমেন্ট যোগ করলে বাড়ে), তাই সর্বোত্তম হবে শুধু লেন্থ ২-এর সাবঅ্যারেগুলো বিবেচনা করা।
  • অতএব লেন্থ ২-এর সব সাবঅ্যারে বিবেচনা করে যোগফল তুলনা করুন এবং ন্যূনতমটি নিন।

সি++ কোড উদাহরণ

#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

  1. C++-এ জব শিডিউলের ন্যূনতম কঠিনতা (Minimum Difficulty of a Job Schedule)

  2. C++-এ একটি রেখায় সর্বোচ্চ পয়েন্ট (Max Points on a Line)

  3. C++-এ মিন হিপে নির্দিষ্ট মান x থেকে ছোট সব নোড প্রিন্ট করা

  4. C++-এ ম্যাক্স হিপ-এ ন্যূনতম এলিমেন্ট বের করা