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

দুটি অ্যারে থেকে ক্রমানুসারে উপাদান বেছে নেয়ার সর্বোচ্চ যোগফল (C++ প্রোগ্রাম)

এই সমস্যাতে, আমাদের দুটি অ্যারে arr1[] এবং arr2[], এবং দুটি সংখ্যা N এবং M দেওয়া আছে।

  • N হল arr1 থেকে নেওয়া উপাদানের সংখ্যা।
  • M হল arr2 থেকে নেওয়া উপাদানের সংখ্যা।

আমাদের arr1[i] থেকে arr2[i] পর্যন্ত একটি উপাদান বেছে নিতে হবে, যাতে যোগফল সর্বোচ্চ হয়, কিন্তু arr1 থেকে সর্বোচ্চ N এবং arr2 থেকে সর্বোচ্চ M সংখ্যক উপাদান নেওয়া যাবে।

আমাদের কাজ হল দুটি অ্যারে থেকে ক্রমানুসারে উপাদান বেছে নেয়ার সর্বোচ্চ যোগফল খুঁজে বের করার C++ প্রোগ্রাম তৈরি করা।

উদাহরণ ইনপুট
arr1[] = {5, 1, 6, 2, 8, 9}
arr2[] = {8, 4, 7, 9, 1, 3}
M = 3, N = 2
আউটপুট
28
ব্যাখ্যা
বেছে নেওয়া উপাদানগুলো:
i = 0, arr1[0] = 5, arr2[0] = 8. উপাদান: 8
i = 1, arr1[1] = 1, arr2[1] = 4. উপাদান: 4
i = 2, arr1[2] = 6, arr2[2] = 7. উপাদান: 6
i = 3, arr1[3] = 2, arr2[3] = 9. উপাদান: 2
i = 4, arr1[4] = 8, arr2[4] = 1. উপাদান: 8
maxSum = 8 + 4 + 6 + 2 + 8 = 28
সমাধানের পদ্ধতি

সমস্যা সমাধানের একটি পদ্ধতি হল arr1 এবং arr2-এর সর্বোচ্চ উপাদান বের করা, যতক্ষণ না উপাদানের সংখ্যা M বা N-এ পৌঁছায়। এবং তারপর সব মান যোগ করে যোগফল বের করা।

অ্যালগরিদম

আরম্ভিকরণ:

maxSum = 0

ধাপ ১: i → 0 থেকে n

ধাপ ১.১: যদি arr1[i] > arr2[i] এবং M >= 0 হয় → maxSum += arr1[i]。

ধাপ ১.২: অন্যথায় যদি arr1[i] < arr2[i] এবং N >= 0 হয় → maxSum += arr2[i]。

ধাপ ১.৩: অন্যথায় বের হোন।

ধাপ ৩: maxSum ফেরত দিন।

C++ প্রোগ্রাম উদাহরণ
#include 
using namespace std;

int calcMaxSumFromArrays(int arr1[], int arr2[], int N, int M, int size1, int size2) {
    int maxSum = 0;
    for (int i = 0; i < size1; i++) {
        if (arr1[i] > arr2[i] && N > 0) {
            maxSum += arr1[i];
            N--;
        } else if (arr1[i] <= arr2[i] && M > 0) {
            maxSum += arr2[i];
            M--;
        } else if (M > 0) {
            maxSum += arr2[i];
            M--;
        } else if (N > 0) {
            maxSum += arr1[i];
            N--;
        } else
            return maxSum;
    }
    return maxSum;
}

int main() {
    int arr1[] = {5, 1, 6, 2, 8, 9};
    int arr2[] = {8, 4, 7, 9, 1, 3};
    int N = 3, M = 2;
    int size1 = sizeof(arr1) / sizeof(arr1[0]);
    int size2 = sizeof(arr2) / sizeof(arr2[0]);
    cout << "The maximum sum by picking elements from two arrays in order is " << calcMaxSumFromArrays(arr1, arr2, N, M, size1, size2);
    return 0;
}
আউটপুট
The maximum sum by picking elements from two arrays in order is 28
  1. C++-এ তিনটি অ্যারে থেকে সর্বোচ্চ যোগফল যাতে একটি অ্যারে থেকে বারবার উপাদান নেওয়া যায় না

  2. C++-এ দুটি অ্যারেতে ম্যাক্সিমাম সাম পাথ (Maximum Sum Path in Two Arrays)

  3. C++-এ দুটি ভিন্ন অ্যারের সাব-অ্যারের সর্বোচ্চ OR যোগফল

  4. C++-এ দুটি অ্যারে থেকে ক্রম রক্ষা করে সর্বোচ্চ অ্যারে তৈরি