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

C++で指定された合計を持つ4つ組の数


4つの配列が与えられます。目標は、指定された合計値に等しい合計を持つ4つの配列から要素の4つ組を見つけることです。選択する要素は、4つの要素すべてが異なる配列に属するようなものである必要があります。

これを行うには、forループを使用してすべての配列をトラバースし、A [i] + B [j] + C [k] + D [l]==sumかどうかを確認します。はいの場合、カウントをインクリメントします。

例を挙げて理解しましょう-

入力

A[]={ 1,3,1}, B[]={ 2,4,5 } , C[]={ 1,1,2 } , D[]= { 4,4,0} Sum=5

出力 −与えられた合計の4つ組の数は− 2

説明

2 quadrutplets are:
(A[0],B[0],C[2],D[2]) → (1,2,2,0), sum=5
(A[2],B[0],C[2],D[2]) → (1,2,2,0), sum=5

入力

A[]={ 1,1,1}, B[]={ 1,1,1 } , C[]={ 1,1,1 } , D[]= {1,1,1} Sum=3

出力 −与えられた合計を持つ4つ組の数は− 0

説明 −すべての4つ組の合計は4になり、>3になります。

以下のプログラムで使用されているアプローチは次のとおりです

  • 乱数で初期化された同じ長さの整数配列first[]、second []、third []、fourth[]を使用します。

  • 変数first_size、second_size、third_size、fourth_sizeを使用して、それぞれの長さを格納します。

  • 与えられた合計値に対して可変合計を取ります。

  • 関数quadruplets(int first []、int second []、int third []、int four []、int first_size、int second_size、int third_size、int four_size、int sum)は、すべての配列とその長さを合計で受け取り、カウントを返します。与えられた合計の4つ組。

  • FORループを使用して各配列をトラバースします

  • 最も外側のループは、first[]の場合は0<=i >

  • first [i] + second [j] + third [k] + four[l]==合計の場合に比較します。真のインクリメントカウントの場合。

  • すべてのループの終わりに、カウントは指定された合計の4つ組になります。

  • 結果としてカウントを返します。

#include <bits/stdc++.h>
using namespace std;
int quadruplets(int first[], int second[], int third[], int fourth[], int first_size, int second_size, int
third_size, int fourth_size, int sum){
   int count = 0;
   for (int i = 0; i < first_size; i++){
      for (int j = 0; j < second_size; j++){
         for (int k = 0; k < third_size; k++){
            for (int l = 0; l < fourth_size; l++){
               if (first[i] + second[j] + third[k] + fourth[l] == sum){
                  count++;
               }
            }
         }
      }
   }
   return count;
}
int main(){
   int first[] = { 7, -8 };
   int second[] = { 7, -2 };
   int third[] = { 4, -2 };
   int fourth[] = { 3, -4 };
   int first_size = sizeof(first) / sizeof(first[0]);
   int second_size = sizeof(second) / sizeof(second[0]);
   int third_size = sizeof(third) / sizeof(third[0]);
   int fourth_size = sizeof(fourth) / sizeof(fourth[0]);
   int sum= 0;
   cout<<"Count of quadruplets with given sum are: "<<quadruplets(first, second, third, fourth, first_size, second_size, third_size, fourth_size, sum);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of quadruplets with given sum are: 1

  1. C++で指定された合計ですべてのトリプレットを印刷します

    この問題では、一意の整数の配列と合計が与えられます。そして、同じ合計を形成できるトリプレットを見つける必要があります。 問題を解決するために例を見てみましょう- Input : array = {0 , 2 , -1 , 1, -2} Sum = 1 Output : 1 2 -2 0 2 -1 この問題を解決するために、合計を提供するすべてのトリプレットを見つけます。簡単なアプローチは、3つのループを使用して要素の合計を見つけ、適切なトリプレットを返すことです。 例 #include <iostream> using namespace std; void Triplets(

  2. C++で指定された合計ですべてのペアを印刷します

    この問題では、整数の配列と整数の合計が与えられ、合計が合計値に等しい整数のすべてのペアを出力する必要があります。 問題を理解するために例を見てみましょう: 入力- 配列={1、6、-2、3}合計=4 出力- (1、3)、(6、-2) ここでは、指定された合計値のペアが必要です。 問​​題の簡単な解決策は、合計を生成する要素のペアをチェックすることです。これは、配列をトラバースして、合計値となる配列内の数値を見つけることで実行できます。 例 このプログラムは解決策を説明します- #include <iostream> using namespace std; int prin