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

C++で最大の合計を持つ2つの配列からペアの合計を検索します


この問題では、正と個別の2つの配列が与えられます。私たちのタスクは、最大の合計を持つ2つの配列からペアの合計を見つけることです

各配列から1つの要素を含む最大の合計を持つペアを見つけます。

問題を理解するために例を見てみましょう

Input : arr1[] = {3, 7, 5}, arr2[] = {8, 2, 4}
Output : 15

説明

Pairs is (7, 8) = 7 + 8 = 15

ソリューションアプローチ

この問題を解決する簡単な方法は、ループを使用することです。ネストされたループを使用して、すべてのペアの合計を見つけ、合計が最大のペアを返します。 効率的なアプローチ 問題を解決するには、各配列の最大要素を見つけます。そして、最大ペアの合計を見つけます。これは、ネストされたループの代わりに単純なループを使用します。

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
int findMaxPairSum(int arr1[], int n1, int arr2[], int n2) {
   int max1 = -1;
   int max2 = -1;
   for (int i = 0; i < n1; i++) {
      if (arr1[i] > max1)
         max1 = arr1[i];
   }
   for (int i = 0; i < n2; i++) {
      if (arr2[i] > max2)
         max2 = arr2[i];
   }
   return (max1 + max2);
}
int main() {
   int arr1[] = { 3, 7, 5 };
   int arr2[] = { 8, 2, 4 };
   int n1 = sizeof(arr1) / sizeof(arr1[0]);
   int n2 = sizeof(arr2) / sizeof(arr2[0]);
   cout<<"Sum of pair from two arrays with maximum sum is "<<findMaxPairSum(arr1, n1, arr2, n2);
   return 0;
}

出力

Sum of pair from two arrays with maximum sum is 15

もう1つのアプローチ 配列をソートしています。次に、両方の配列の最大値要素を見つけてから、最大ペアの合計を見つけます。

ソリューションの動作を説明するプログラム

#include <bits/stdc++.h>
using namespace std;
int findMaxPairSum(int arr1[], int n1, int arr2[], int n2) {
   sort(arr1, arr1 + n1);
   sort(arr2, arr2 + n2);
   return (arr1[n1 - 1] + arr2[n2 - 1]);
}
int main() {
   int arr1[] = { 3, 7, 5 };
   int arr2[] = { 8, 2, 4 };
   int n1 = sizeof(arr1) / sizeof(arr1[0]);
   int n2 = sizeof(arr2) / sizeof(arr2[0]);
   cout<<"Sum of pair from two arrays with maximum sum is "<<findMaxPairSum(arr1, n1, arr2, n2);
   return 0;
}

出力

Sum of pair from two arrays with maximum sum is 15

  1. C++で2つの配列の合計を同じにする要素スワッピングのペアを見つけます

    要素数が異なる2つの配列があるとします。要素のペア(x​​、y)を見つける必要があります。ここで、xは最初の配列に存在し、yは2番目の配列に存在します。ペアは、これら2つの配列間で要素を交換した後、これら2つの配列の合計が同じになるように選択されます。 最初の配列Aが[4、1、2、2、1、1]を保持し、Bが[3、3、6、3]を保持しているとすると、Aの合計は11、Bの合計は15になります。 (1、3)のようなペアで、これら2つの配列間でこれらの値を交換すると、合計は次のようになります。[4、3、2、2、1、1] =13、[1、3、6、3] =13、それらは同じです。 これを解決するために、

  2. C++の配列で最大GCDのペアを検索します

    正の整数の配列があるとします。私たちのタスクは、GCD値が最大である配列から整数のペアを見つけることです。 A ={1、2、3、4、5}とすると、出力は2になります。ペア(2、4)にはGCD 2があり、他のGCD値は2未満です。 この問題を解決するために、各要素の除数の数を格納するためのカウント配列を維持します。除数を数えるプロセスには、O(sqrt(arr [i]))の時間がかかります。全体をトラバースした後、最後のインデックスから最初のインデックスまでカウント配列をトラバースできます。要素が1より大きい値が見つかった場合、これは2つの要素の約数であり、最大GCDでもあることを意味します。