এই টিউটোরিয়ালে, আমরা নির্দিষ্ট কিছু উপাদান বাদ দিয়ে সর্বাধিক Subarray যোগফল খুঁজে বের করার জন্য একটি প্রোগ্রাম নিয়ে আলোচনা করব।
এর জন্য আমাদেরকে 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