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

C ++で[a、b]の範囲の合計を持つ配列内のトリプレットの数をカウントします


範囲[a、b]を定義するために、整数の配列Arr[]と2つの変数aおよびbが与えられます。目標は、合計がこの範囲[a、b]の間にあるトリプレットの数を見つけることです。

これを行うには、3つのforループを使用します。 arr [i] + arr [j] + arr [k]>=aおよびarr[i]+ arr [j] + arr [k] <=bの場合、カウントをインクリメントします。ここで、0 <=i <=n-2、i

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

入力 − arr [] ={1,2,3,4,5}、N =5、L =2、R =8

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

説明

Triplets with sum>=2 and sum<=8
(1,2,3) → 6
(1,2,4) → 7
(1,2,5) → 8
(1,3,4) → 8
Total triplets: 4

入力 − arr [] ={2,2,2,2,2}、N =5、L =2、R =5

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

説明

すべてのトリプレットの合計は6になります。これは[2,5]

の範囲ではありません。

トリプレットの合計:0

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

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

  • 範囲[L、R]を定義するために変数LとRを取ります。 NはArr[]の長さを格納します。

  • 関数countTriplets(int arr []、int n、int a、int b)は、配列、その長さおよび範囲の変数を入力として受け取り、合計がこの範囲にあるトリプレットを返します。

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

  • 初期変数の合計を各トリプレットの合計として取ります。最初は0です。

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

  • 0 <=i

  • sum =arr [i] + arr [j] +arr[k]を計算します。 a <=sum <=bの場合、カウントをインクリメントします。

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

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

#include <bits/stdc++.h>
using namespace std;
int countTriplets(int arr[],int n,int a,int b){
   int count = 0;
   int sum=0;
   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++){
            sum=arr[i]+arr[j]+arr[k];
            if ( sum>=a && sum<=b) //check{
               count++;
               // cout<<endl<<"a :"<<arr[i]<<" b :"<<arr[j]<<" c :"<<arr[k]; //to print
            }
         }
      }
   }
   return count;
}
int main(){
   int Arr[]={ 5,4,3,6,8,2 };
   int L=9;
   int R=15;
   int N=6; //length of array
   cout <<endl<< "Number of triplets : "<<countTriplets(Arr,N,L,R);
   return 0;
}

出力

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

Number of triplets : 14

  1. Xとの合計がC++のフィボナッチ数であるノードをカウントします

    ノードの重みを数値として持つ二分木を指定します。目標は、その数がフィボナッチ数であるような重みを持つノードの数を見つけることです。フィボナッチ数列の数は次のとおりです。0、1、1、2、3、5、8、13…。n番目の数はの合計です。 (n-1)番目と(n-2)番目。重みが13の場合、それはフィボナッチ数であるため、ノードがカウントされます。 例 入力 temp=1。値を入力した後に作成されるツリーを以下に示します- 出力 Count the nodes whose sum with X is a Fibonacci number are: 3 説明 we are given with

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

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