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

C++-এ নির্দিষ্ট উপাদান বাদে সর্বোচ্চ সাবঅ্যারে যোগফল (Maximum Subarray Sum Excluding Certain Elements)

এই টিউটোরিয়ালে আমরা নির্দিষ্ট উপাদান বাদে সর্বোচ্চ সাবঅ্যারে যোগফল বের করার আলোচনা করব।

দুটি অ্যারে দেওয়া থাকবে (আকার M এবং N)। প্রথম অ্যারেতে এমন একটি সাব-অ্যারে খুঁজে বের করতে হবে যাতে সাবঅ্যারেতে কোনো উপাদান দ্বিতীয় অ্যারেতে নেই এবং সাবঅ্যারেতে উপাদানগুলোর যোগফল সর্বোচ্চ হয়।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
//checking if element is present in second array
bool isPresent(int B[], int m, int x) {
    for (int i = 0; i < m; i++)
        if (B[i] == x)
            return true;
    return false;
}
int findMaxSubarraySumUtil(int A[], int B[], int n, int m) {
    int max_so_far = INT_MIN, curr_max = 0;
    for (int i = 0; i < n; i++) {
        if (isPresent(B, m, A[i])) {
            curr_max = 0;
            continue;
        }
        curr_max = max(A[i], curr_max + A[i]);
        max_so_far = max(max_so_far, curr_max);
    }
    return max_so_far;
}
void findMaxSubarraySum(int A[], int B[], int n, int m) {
    int maxSubarraySum = findMaxSubarraySumUtil(A, B, n, m);
    if (maxSubarraySum == INT_MIN) {
        cout << "Maximum Subarray Sum cant be found" << endl;
    } else {
        cout << "The Maximum Subarray Sum = " << maxSubarraySum << endl;
    }
}
int main() {
    int A[] = { 3, 4, 5, -4, 6 };
    int B[] = { 1, 8, 5 };
    int n = sizeof(A) / sizeof(A[0]);
    int m = sizeof(B) / sizeof(B[0]);
    findMaxSubarraySum(A, B, n, m);
    return 0;
}

আউটপুট

The Maximum Subarray Sum = 7
  1. সর্বোচ্চ k সংখ্যক এলিমেন্টের চিহ্ন ফ্লিপ করে সর্বোচ্চ সাবঅ্যারে যোগফল C++-এ

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

  3. স্ট্রিক্টলি ইনক্রিজিং সাব-অ্যারের সর্বোচ্চ যোগফল বের করা C++-তে

  4. C++-এ ডিভাইড অ্যান্ড কঙ্কর ব্যবহার করে मैक्सিমাম সাবঅ্যারে সম বের করা