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

C++プログラムの配列の最小値と2番目に小さい値の最大合計


この問題では、配列arr[]が与えられます。私たちのタスクは、配列内の最小値と2番目に小さい値の最大合計を見つけるプログラムを作成することです。

問題の説明 −配列の合計サブ配列の最小要素と2番目に小さい要素の合計を見つける必要があります。そして、そのようなすべてのサブ配列の合計の最大値を返します。

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

入力

arr[] = {3, 5, 4, 2, 9, 1, 6}

出力

11

説明

Their out of all subarrays possible,
{2, 9} has a maximum sum of smallest elements.
Sum = 2 + 9 = 11

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

この問題の簡単な解決策は、すべてのサブ配列を生成することです。最小および2番目に小さい要素を見つけ、合計を見つけます。すべての最大合計を返します。

もう1つのより効率的な解決策は、例の観察に基づいています。配列の2つの連続する要素ペアの合計となる最大合計を見つける必要があります。そして、最大の合計ペアを見つけます。

アルゴリズム

初期化

maxSum = −1

ステップ1

loop i −> 0 to n−1

ステップ1.1

if maxSum < (arr[i] + arr[i+1]). Then, maxSum = (arr[i] +
arr[i+1])

ステップ2

Return maxSum.

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

#include <iostream>
using namespace std;
int calcMaxSumPairs(int arr[], int n) {
   int maxSum = −1;
   for (int i=0; i< (n − 1); i++)
   if(maxSum < (arr[i] + arr[i + 1]))
   maxSum = (arr[i] + arr[i + 1]);
   return maxSum;
}
int main() {
   int arr[] = {3, 4, 2, 9, 5, 6};
   int n = sizeof(arr) / sizeof(int);
   cout<<"The maximum sum of smallest and second smallest in an
   array is "<<calcMaxSumPairs(arr, n);
   return 0;
}

出力

The maximum sum of smallest and second smallest in an array is 14

  1. C ++プログラムで配列の最初、2番目、3番目の最小要素を検索します

    n個の要素の配列があるとします。配列内の1番目、2番目、3番目の最小要素を見つける必要があります。最初の最小値はアレイの最小値であり、2番目の最小値は最小ですが最初の最小値よりも大きく、同様に3番目の最小値は最小ですが2番目の最小値よりも大きくなります。 各要素をスキャンしてから要素を確認し、この問題を解決するために1番目、2番目、3番目の最小要素の条件を関連付けます。 例 #include<iostream> using namespace std; int getThreeMins(int arr[], int n) {    int first = IN

  2. C++で配列内の最小要素と2番目に小さい要素を検索します

    n個の要素の配列があるとします。配列内で最初、2番目に小さい要素を見つける必要があります。最初の最小値は配列の最小値であり、2番目に小さい値は最小値ですが、最初の最小値よりも大きくなります。 各要素をスキャンしてから要素を確認し、この問題を解決するために1番目と2番目に小さい要素の条件を関連付けます。 例 #include<iostream> using namespace std; int getTwoSmallest(int arr[], int n) {    int first = INT_MAX, sec = INT_MAX;   &nb