समस्या कथन
धनात्मक पूर्णांकों के दो सरणियों को देखते हुए। प्रत्येक सरणी से समान आकार के दो उप-सरणी चुनें और अधिकतम संभव या दो उप-सरणी के योग की गणना करें।
उदाहरण
अगर arr1[] ={1, 2, 4, 3, 2} और
Arr2[] ={1, 3, 3, 12, 2} तब अधिकतम परिणाम प्राप्त होता है जब हम निम्नलिखित दो उप-सरणी बनाते हैं -
Subarr1[] ={2, 4, 3} और
Subarr2[] ={3, 3, 12}
एल्गोरिदम
परिणाम प्राप्त करने के लिए हम नीचे दिए गए सूत्र का उपयोग कर सकते हैं -
f(a, 1, n) + f(b, 1, n)
उदाहरण
#include <bits/stdc++.h> using namespace std; int getMaximumSum(int *arr1, int *arr2, int n) { int sum1 = 0; int sum2 = 0; for (int i = 0; i < n; ++i) { sum1 = sum1 | arr1[i]; sum2 = sum2 | arr2[i]; } return sum1 + sum2; } int main() { int arr1[] = {1, 2, 4, 3, 2}; int arr2[] = {1, 3, 3, 12, 2}; int n = sizeof(arr1) / sizeof(arr1[0]); cout << "Maximum result = " << getMaximumSum(arr1, arr2, n) << endl; return 0; }
आउटपुट
जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है -
Maximum result = 22