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

C++の配列の最大トリプレット合計


この問題では、配列が与えられます。私たちのタスクは、配列内の最大のトリプレット合計を見つけるプログラムを作成することです。つまり、合計が最大である3つの要素のセットを見つけます。

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

入力 −配列={4、6、1、2}

出力 − 12

説明

all triplets are :
(4, 6, 1) = 4+6+1 = 11
(4, 6, 2) = 4+6+1 = 12
(4, 1, 2) = 4+6+1 = 7
(6, 1, 2) = 4+6+1 = 9
The maximum triplet sum is 12

この問題を解決するための簡単なアプローチの1つは、例で示したものです。これは、すべてのトリプレットペアの合計値を取得し、それらの最大値を見つけることです。しかし、トリプレットの数がすべて長くなると、このアプローチは効果的ではありません。

この方法では、考えられるすべての合計トリプレットを見つける3つのループを実行し、このトリプレットの合計がmaxsumより大きい場合、このトリプレットの合計をmaxsumとして初期化します。

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

#include <iostream>
using namespace std;
int maxSum(int arr[], int n){
   int maxSum = 0;
   int i, j, k;
   for (i = 0; i < n; i++)
      for (j = i + 1; j < n; j++)
         for (k = j + 1; k < n; k++)
            if (maxSum < arr[i] + arr[j] + arr[k]) maxSum = arr[i] + arr[j] + arr[k];
   return maxSum;
}
int main(){
   int arr[] = { 3, 5, 7 ,1, 9, 0 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"The maximum triplet sum of the array is "<<maxSum(arr, n);
   return 0;
}

出力

The maximum triplet sum of the array is 21

効果的なアプローチは、配列を並べ替えてから、配列の最後の3つの要素の合計を見つけることです。これは、トリプレットの最大合計になります。

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

#include <bits/stdc++.h>
using namespace std;
int maxSum(int arr[], int n) {
   sort(arr, arr + n);
   return arr[n - 1] + arr[n - 2] + arr[n - 3];
}
int main() {
   int arr[] = { 3, 5, 9, 1, 2, 8, 7 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"The maximum triplet sum of the array is "<<maxSum(arr, n);
   return 0;
}

出力

The maximum triplet sum of the array is 24

  1. C++での配列の最大平均合計パーティション

    問題の説明 配列が与えられた場合、数値Aの行を最大でK個の隣接する(空でない)グループに分割し、スコアは各グループの平均の合計になります。スコアリングできる最大スコアはいくつですか? 例 入力配列が{9、2、5、3、10}の場合、次のように配列を分割できます- {9} {2、5、3}および{10}の場合、これの平均合計は- 9 +(2 + 5 + 3)/ 3 + 10 =22.33 アルゴリズム この問題を解決するために暗記技術を使用することができます- メモ[i][k]を、A[iからn-1]を最大でK個のパーツに分割する最高のスコアとします 最初のグループでは、A[iからn-1

  2. C ++の合計配列パズル?

    ここでは、配列に関連する1つの興味深い問題を確認します。 n個の要素を持つ配列があります。 n個の要素の別の配列を作成する必要があります。ただし、2番目の配列のi番目の位置は、i番目の要素を除く最初の配列のすべての要素の合計を保持します。そして、1つの制約は、この問題では減算演算子を使用できないことです。 減算演算を使用できれば、すべての要素の合計を取得し、最初の配列のi番目の要素を減算して、2番目の配列のi番目の場所に格納することで、この問題を簡単に解決できます。 ここでは、毎回要素を追加することでこれを解決し、0..n-1のiについては、位置iの要素を無視します。ポイントを得るためのア