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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP