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

C ++で許可されている重複を使用して、指定された数に等しい積を持つトリプレットの数をカウントします


一連の数字Arr[]が与えられます。目標は、積が与えられた数pに等しいトリプレットの数を数えることです。同じ値で要素が異なる複数のトリプレットが存在する可能性があります。たとえば、配列[1,2,3,1,2]の(1,2,3)と(3,1,2)は、要素が異なるが値が同じである場合、異なるものとしてカウントされます。

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

入力 − arr [] ={1,2,3,2,4,1,5}、p =4

出力 −トリプレットの数:3

説明

Triplet 1[ 1,2,3,2,4,1,5 ] → (1,2,2) product=4
Triplet 2 [ 1,2,3,2,4,1,5 ] → (1,4,1) product=4
Triplet 3 [ 1,2,3,2,4,1,5 ] → (2,2,1) product=4
Number of triplets with product 4 is 3.

入力 − arr [] ={1,1,2,1,2,2}、p =8

出力 −トリプレットの数− 1

説明

Triplet 1 [ 1,1,2,1,2,2 ] → (2,2,2) product=8
Number of triplets with product 8 is 1

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

  • 乱数で初期化された整数配列Arr[]を使用します。

  • Product値を格納する可変製品を取ります。 NはArr[]の長さを格納します。

  • 関数countTriplets(int arr []、int n、int p)は、配列、その長さ、および積を入力として受け取り、積がpに等しいトリプレットを返します。

  • トリプレットの数として、初期変数カウントを0とします。

  • 各トリプレットの積として初期変数prodを取ります。最初は1。

  • トリプレットの各要素に対して3つのforループを使用して配列をトラバースします。

  • 0 <=i

  • prod =arr [i] * arr [j] *arr[k]を計算します。 prod ==pの場合、カウントをインクリメントします。

  • すべてのループの終わりに、カウントには、条件を満たすトリプレットの総数が含まれます。

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

#include <bits/stdc++.h>
using namespace std;
int countTriplets(int arr[],int n,int p){
   int count = 0;
   int prod=1;
   for (int i = 0; i < n-2; i++){
      for (int j = i+1; j < n-1; j++){
         for (int k = j+1; k < n; k++){
            prod=arr[i]*arr[j]*arr[k];
               if ( prod==p ){
                  count++;
                  // cout<<endl<<"a :"<<arr[i]<<" b :"<<arr[j]<<" c :"<<arr[k]; //to print
               }
            }
         }
      }  
   }
   return count;
}
int main(){
   int Arr[]={ 1,2,3,6,1,6,3,2,1};
   int N=9; //length of array
   int product=6;
   cout <<endl<< "Number of triplets : "<<countTriplets(Arr,N,product);
   return 0;
}

出力

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

Number of triplets : 18.

  1. C++で指定された数に等しいGCDを持つセットのサブセットの数をカウントします

    正の数を含む配列arとgcd値を含む配列GCD[]が与えられます。目標は、GCD[]で指定されたgcd値を持つarr[]の要素のサブセットの数を見つけることです。 例 入力 arr[] = {10, 5, 6, 3}, GCD[] = {2, 3, 5} 出力 Count of number of subsets of a set with GCD equal to a given number are: 1 2 2 説明 The subsets with GCD equal to 2 is [ 10, 6 ]. Subsets with GCD equal to 3 is [ 3 ],

  2. ソートされた二重リンクリスト内のトリプレットをカウントします。このリストの積は、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: