C++で最小の製品トリプレットを形成する方法を数える
これを行うには、最初に(i
例を挙げて理解しましょう。
入力 − arr [] ={1,2,3,2,4,1,5}
出力 −トリプレットの数− 2
説明 −
入力 − arr [] ={1,1,2,1,2,2}
出力 −トリプレットの数− 1
説明 −
乱数で初期化された整数配列Arr[]を使用します。
Arr[]の長さを格納する変数Nを取ります。
関数countTriplets(int arr []、int n)は配列を受け取り、その長さを入力として受け取り、積が最小積に等しいトリプレットを返します。
トリプレットの数として、初期変数カウントを0とします。
各トリプレットの積として初期変数prodを取ります。最初は1。
すべてのトリプレットの可能な最小の積として、初期変数minprodを取ります。最初は999です。
トリプレットの各要素に対して3つのforループを使用して配列をトラバースします。
0 <=i
prod =arr [i] * arr [j] *arr[k]を計算します。 prod <=minprodの場合は、minprodをprodで更新します。
現在、minprodは、すべてのトリプレットの中で最小の積の値を持っています。
トリプレットの各要素に対して3つのforループを使用して配列を再度トラバースします。
0 <=i
prod =arr [i] * arr [j] *arr[k]を計算します。 prod ==minprodの場合、カウントをインクリメントします。このペアは最小の製品であるため。
すべてのループの終わりに、カウントには、条件を満たすトリプレットの総数が含まれます。
結果としてカウントを返します。
上記のコードを実行すると、次の出力が生成されます-Here minimum product is 2
Triplet 1[ 1,2,3,2,4,1,5 ] → (1,2,1) product=2
Triplet 2 [ 1,2,3,2,4,1,5 ] → (1,2,1) product=2
Number of triplets with product 2 which is minimum is 2.
Here minimum product is 1
Triplet 1 [ 1,1,2,1,2,2 ] → (1,1,1) product=1
Number of triplets with product 1 which is minimum is 1.
以下のプログラムで使用されているアプローチは次のとおりです
例
#include <bits/stdc++.h>
using namespace std;
int countTriplets(int arr[],int n){
int count = 0;
int prod=1;
int minprod=9999; //making minimum as larger than any product in array
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<=minprod )
{ minprod=prod; }
}
}
}
// cout<<"minproduct :"<<minprod; //to print minimum product
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==minprod ){
count++;
//cout<<endl<<"a :"<<arr[i]<<" b :"<<arr[j]<<" c :"<<arr[k]; //to print
}
}
}
}
return count;
}
int main(){
int Arr[]={ 1,2,3,1,2,6};
int N=5; //length of array
cout <<endl<< "Number of triplets : "<<countTriplets(Arr,N);
return 0;
}
出力
Number of triplets : 2
-
C++でセットをk個のサブセットに分割する方法の数を数えます
与えられた2つの数字eとp。目標は、セットのe個の要素をp個のパーティション/サブセットに分割できる方法の数を数えることです。 例 入力 e=4 p=2 出力 Count of number of ways to partition a set into k subsets are: 7 説明 If elements are: a b c d then ways to divide them into 2 partitions are: (a,b,c)−(d), (a,b)−(c,d), (a,b,c)−(d), (a)−(b,c,d), (
-
ソートされた二重リンクリスト内のトリプレットをカウントします。このリストの積は、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: