首页 文章资讯内容详情

C++中两个不同数组的子数组的最大或和

2026-06-04 1 花语

问题陈述

给定两个正整数数组。从每个阵列中选择两个大小相等的子阵列,然后计算两个子阵列的最大可能或。

示例

如果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