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

C++のソートされていない配列で最大のペアの合計を見つけます


この問題では、N個のソートされていない要素で構成されるarr[]が与えられます。私たちのタスクは、並べ替えられていない配列で最大のペアの合計を見つけることです。 。

合計が最大のペアを見つけます。

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

Input : arr[] = {7, 3, 9, 12, 1}
Output : 21

説明

Pair with largest sum, (9, 12). Sum = 21

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

この問題の簡単な解決策は、配列の最大要素と2番目の最大要素のペアを作成することです。

このために、配列のmax要素とsecondMax要素を、配列の1番目と2番目の要素で初期化します。大きい方がmaxで、もう1つがsecondMaxです。

ここで、配列をインデックス2から(n-1)までループします。そして、それらをmaxおよびsecondMax値と比較します。

arr [i]がmaxより大きい場合、secondMax=maxおよびmax=arr[i]。

arr [i]がsecondMaxより大きい場合、secondMax =arr[i]。

そして、ループの終わりに、(max + secondMax)を返します。

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

#include<iostream>
using namespace std;
int findPairLargestSum(int arr[], int n){
   int max, secondMax;
   if (arr[0] > arr[1]){
      max = arr[0];
      secondMax = arr[1];
   }
   else{
      max = arr[1];
      secondMax = arr[0];
   }
   for (int i = 2; i<n; i ++){
      if (arr[i] > max){
         secondMax = max;
         max = arr[i];
      }
      else if (arr[i] > secondMax && arr[i] != max) 
         secondMax = arr[i];
   }
   return (max + secondMax);
}
int main(){
   int arr[] = {12, 34, 10, 6, 40};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout<<"The sum of elements of pair with max sum is "<<findPairLargestSum(arr, n);
   return 0;
}

出力

The sum of elements of pair with max sum is 74

  1. C++のツリーで最大のサブツリーの合計を検索します

    この問題では、二分木が与えられます。私たちのタスクは、ツリー内で最大のサブツリーの合計を見つけることです。 問題の説明: 二分木は、正の値と負の値で構成されます。そして、ノードの合計が最大のサブツリーを見つける必要があります。 問題を理解するために例を見てみましょう。 出力: 13 説明: 左サブツリーの合計は7です 右サブツリーの合計は1です ツリーの合計は13です ソリューションアプローチ この問題を解決するために、ポストオーダートラバーサルを実行します。ノードの左側のサブツリーと右側のサブツリーの合計を計算します。現在のノードについて、現在のノードの

  2. 配列の最大要素を見つけるためのC++プログラム

    配列には複数の要素が含まれており、配列内の最大の要素は他の要素よりも大きい要素です。 たとえば。 5 1 7 2 4 上記の配列では、7が最大の要素であり、インデックス2にあります。 配列の最大の要素を見つけるプログラムは次のとおりです。 例 #include <iostream> using namespace std; int main() {    int a[] = {4, 9, 1, 3, 8};    int largest, i, pos;    largest = a[0