C++中两个不同数组的子数组的最大或和
问题陈述
给定两个正整数数组。从每个阵列中选择两个大小相等的子阵列,然后计算两个子阵列的最大可能或。
示例
如果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
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短