C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++の2つの異なる配列のサブ配列の最大OR合計


問題の説明

正の整数の2つの配列が与えられます。各アレイから同じサイズの2つのサブアレイを選択し、2つのサブアレイの可能な最大OR合計を計算します。

arr1 [] ={1、2、4、3、2}および

の場合

Arr2 [] ={1、3、3、12、2}次に、次の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

  1. C++でのmを法とする最大サブアレイ合計

    この問題では、サイズnと整数mの配列が与えられます。私たちのタスクは、C++でmを法とする最大のサブ配列の合計を見つけるプログラムを作成することです。 プログラムの説明 −ここでは、サブアレイのすべての要素の合計をmで割った値を求めます。 問題を理解するために例を見てみましょう 入力 −配列={4、9、2} m =6 出力 − 5 説明 −すべてのサブ配列と除算の余り {4}: 4%6 = 4 {9}: 9%6 = 3 {2}: 2%6 = 2 {4, 9}: 13%6 = 1 {9, 2}: 11%6 = 5 {4, 9, 2}: 15%6 = 3 この問題を解決するために、

  2. C++の配列の最大平衡合計

    問題の説明 配列arr[]が与えられます。 arr[]のインデックスiのサフィックス合計でもあるプレフィックス合計の最大値を見つけます。 例 入力配列が-の場合 Arr [] ={1、2、3、5、3、2、1}の場合、出力は次のように11になります- プレフィックス合計=arr[0..3] =1 + 2 + 3 + 5=11および サフィックスの合計=arr[3..6] =5 + 3 + 2 + 1 =11 アルゴリズム 配列をトラバースし、各インデックスのプレフィックスの合計を配列presum []に格納します。ここで、presum[i]はサブ配列arr[0..i]の合計を格納し