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

C++で指定された条件を満たす配列内の有効なペアをカウントします


N個の要素の配列arr[]が与えられます。目標は、特定の条件に従うすべての有効なペア(Arr [i]、Arr [j])の数を見つけることです。 -

の場合、ペアArr [i]、Arr[j]は無効です
  • Arr [i] ==Arr [j]
  • Arr [i] +Arr[j]は偶数です
  • i + j <120

Arr [i]、Arr[j]とArr[j]、Arr[i]は1つのペアとしてカウントされます。有効なペアにはi!=jがあります 例を挙げて理解しましょう。

入力

Arr[]= { 3,2,1,2,4,3 } N=4

出力

Count of valid pairs: 2

説明

有効なペアは-

です
Arr[0] & Arr[4] → (3,3) here Arr[i]==Arr[j] & 3+3 is even also i!=j and i+j<120
Arr[1] & Arr[3] → (2,2) here Arr[i]==Arr[j] & 2+2 is even also i!=j and i+j<120

入力

Arr[]= { 1,2,3,4,5,6 } N=6

出力

Count of valid pairs: 0

説明

要素の繰り返しはありません。 i!=jの場合、タイプ(a、a)のペアは使用できません。

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

  • 乱数で初期化された整数配列Arr[]を使用します。
  • Arr[]の長さを格納する変数nを取ります。
  • 関数countPairs(int arr []、int n)は、入力としてその長さの配列を受け取り、有効で目的の条件を満たすペアを返します。
  • ペアの要素ごとに2つのforループを使用して配列をトラバースします。
  • 0 <=i
  • arr [i]、arr [j] assum =(arr [i] + aar [j])の合計を計算します。
  • ペアが有効かどうかを確認します。 i!=jとsum%2==0の場合もi+j<120と比較します。
  • ここで、arr [i] ==arr[j]かどうかを確認します。インクリメントカウント。
  • すべてのループの最後に、カウントには有効なペアの総数が含まれます
  • 結果としてカウントを返します。

#include <bits/stdc++.h>
using namespace std;
int countPairs(int arr[], int n){
   int count=0;
   for(int i=0;i<n;i++){
      for(int j=i+1;j<n;j++) //j=i+1 we don't have to check i!=j{
         int sum=arr[i]+arr[j];
         //valid pairs have i!=j
         if( sum%2==0 && i+j<120){
            if( arr[i]==arr[j] ) //valid pair{
               count++;
               cout<<endl<<" a:"<<arr[i]<<"b: "<<arr[j];
            }
         }
      }
   }
   return count;
}
int main(){
   int arr[] = {1,2,3,2,4,1,4 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout <<endl<<"Valid pairs in array:"<<countPairs(arr, n);
   return 0;
}

出力

Valid pairs in array:
a:1b: 1
a:2b: 2
a:4b: 43

  1. C++のグリッドで指定された方向に可能な移動をカウントします

    サイズnxmのグリッドと開始点x、yを表す2つの変数nとmです。 また、移動((1,1)、(2,2))などとしてグリッド内を移動するために実行できるステップ/移動のペアも指定されます。移動の各ペアは、x、y軸で実行されるステップの単位を表します。目標は、境界[1、n] X [1、m]内のグリッド内をトラバースするために実行できる合計ステップを見つけることです。nが5、mが4、現在の位置が2、2で、選択されたステップが( 1、-1)次に、このステップを1回実行すると、(3,1)になります。このステップを再度実行すると、(4、-1)になります。これは、-1が範囲外であるため無効です。 例

  2. C++のRotatedSorted配列でRotationCountを検索します

    回転してソートされた配列である配列があるとします。配列をソートするために必要な回転数を見つける必要があります。 (右から左への回転を検討します。) 配列が{15、17、1、2、6、11}のようであるとすると、配列を2回回転させて並べ替える必要があります。最終的な注文は{1、2、6、11、15、17}になります。ここでの出力は2です。 ロジックは単純です。気づいたら、回転数が最小要素のインデックスの値と同じであることがわかります。したがって、最小の要素を取得すると、そのインデックスが結果になります。 例 #include <iostream> using namespace st