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

合計がC++の指定された値xに等しい4つのソートされた配列から4倍をカウントします


4つの配列A[]、B []、C []、およびD[]が与えられます。目標は、A [i] + B [j] + C [k] + D [l]=xとなるようなこれらの配列の要素のすべての4倍を見つけることです。 4つの配列すべてに同じ数の要素Nがあります。

これを行うには、各配列を1回トラバースし、A [i] + B [j] + C [j] + D [l]==xかどうかを比較します。真のインクリメントカウントの場合。

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

入力

A[]={ 1,2,3}; B[]={ 2,3,2}; C[]={ 4,3,1}; D[]={ 3,1,1 }; X=12

出力

Count of Quadruples: 4

説明

Quadruples such as ( A[i] B[j] C[k] D[l] ) are:
(2 3 4 3) , (3 2 4 3), (3 3 3 3), (3 2 4 3)
Number of quadruples : 4

入力

A[]={ 1,1,1}; B[]={ 2,2,2}; C[]={ 3,3,3}; D[]={ 4,4,4 }; X=15

出力

Count of Quadruples: 0

説明

No such elements could be paired.

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

  • 乱数で初期化された同じ長さの整数配列A[]、B []、C []、およびD[]を使用します。

  • 変数Nを取り、それらの長さを格納します。

  • 関数countQuad(int a []、int b []、int c []、d []、int x、int n)は、すべての配列を同じ長さnの入力として受け取り、countを返します。

  • 配列ごとに4つのループを使用してトラバースします。

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

  • a [i] + b [j] + c [k] + d [l]==xの場合に比較します。真のインクリメントカウントの場合。

  • すべてのループの終わりに、カウントは合計xの4倍になります。

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

#include <bits/stdc++.h>
using namespace std;
int countQuads(int a[],int b[],int c[],int d[],int x, int n){
   int count = 0;
   for (int i = 0; i < n; i++){
      for (int j = 0; j < n; j++){
         for (int k = 0; k < n; k++){
            for (int l = 0; l < n; l++){
               int sum=a[i]+b[j]+c[k]+d[l];
               if(sum==x){
                  count++;
                  cout<<endl<<a[i]<<" "<<b[j]<<" "<<c[k]<<" "<<d[l];}
               }
            }
         }
      }
   return count;
}
int main(){
   int A[]={ 1,1,1}; int B[]={ 2,2,2}; int C[]={ 3,3,3}; int D[]={ 4,4,4 };
   int X=15;
   int N=3; //length of each array
   cout <<endl<< "Number of quadruples : "<<countQuads(A,B,C,D,X,N);
   return 0;
}

出力

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

Count of Quadruples: 0

  1. ソートされた二重リンクリスト内のトリプレットをカウントします。このリストの積は、C++で指定された値xに等しくなります。

    整数値を含むソートされた二重リンクリストが与えられます。目標は、積が与えられた値xに等しいトリプレットを見つけることです。入力リンクリストが3−4−1−2で、xが6の場合、カウントは1になります(トリプレット(3,1,2)) 例 入力 linked list: [ 200−4−16−5−10−10−2 ] x=200 出力 Count of triplets in a sorted doubly linked list whose product is equal to a given value x are:

  2. 合計がC++の指定された値xに等しい2つのBSTからペアをカウントします

    入力として2つの二分探索木と変数xが与えられます。目標は、ノードの値の合計がxに等しくなるように、各ツリーからノードのペアを見つけることです。 BST_1からノード1を取得し、BST_2からノード2を取得して、両方のデータ部分を追加します。 sum=xの場合。インクリメントカウント。 例を挙げて理解しましょう。 入力 出力 −合計が特定の値xに等しい2つのBSTからのペアの数は− 1 説明 −ペアは(8,6) 入力 出力 −合計が特定の値xに等しい2つのBSTからのペアの数は− 2 説明 −ペアは(5,15)と(4,16) 以下のプログラムで使用されているアプ