Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 서로 다른 두 배열의 하위 배열의 최대 OR 합

<시간/>

문제 설명

양의 정수로 구성된 두 개의 배열이 제공됩니다. 각 배열에서 동일한 크기의 두 하위 배열을 선택하고 두 하위 배열의 가능한 최대 OR 합을 계산합니다.

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