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

C++で指定された違いを持つペアを見つけます


配列Aがあるとすると、n個の異なる要素があります。 xとyの差が与えられた差dと同じになるように、配列Aからペア(x、y)を見つける必要があります。要素のリストがA=[10、15、26、30、40、70]のようで、差が30の場合、ペアは(10、40)と(30、70)になります

この問題を解決するために、配列がソートされていると仮定し、左から2つのポインターをポイント要素に取ります。最初は、最初の1つの「i」が最初の要素を指し、2番目の「j」がポイント要素を指します。 2番目の要素。 A [j] – A [i]がnと同じ場合、ペアを出力します。A[j] – A [i]

#include<iostream>
using namespace std;
void displayPair(int arr[], int size, int n) {
   int i = 0;
   int j = 1;
   while (i < size && j < size) {
      if (i != j && arr[j] - arr[i] == n) {
         cout << "(" << arr[i] << ", " << arr[j] << ")"<<endl;
         i++; j++;
      }
      else if (arr[j]-arr[i] < n)
         j++;
      else
         i++;
   }
}
int main() {
   int arr[] = {10, 15, 26, 30, 40, 70};
   int size = sizeof(arr)/sizeof(arr[0]);
   int n = 30;
   displayPair(arr, size, n);
}

出力

(10, 40)
(40, 70)

  1. C++の平衡二分探索木で与えられた合計を持つペアを見つけます

    平衡二分探索木とターゲット合計があるとすると、合計がターゲット合計に等しいペアであるかどうかをチェックするメソッドを定義する必要があります。この場合。二分探索木は不変であることに注意する必要があります。 したがって、入力が次のような場合 その場合、出力は(9 + 26 =35)になります。 これを解決するには、次の手順に従います- スタックs1、s2を定義する done1:=false、done2:=false val1:=0、val2:=0 curr1:=root、curr2:=root 無限ループ、実行- done1がfalseの場合、do − curr1が

  2. C++で指定されたGCDとLCMのペアを検索します

    このセクションでは、指定されたGCD値とLCM値を使用してペアの数を取得する方法を説明します。 GCDとLCMの値が2と12であると仮定します。これで、可能な数値のペアは(2、12)、(4、6)、(6、4)、および(12、2)になります。したがって、私たちのプログラムはペアの数を見つけます。それは4です。 この問題を解決するための手法を理解するためのアルゴリズムを見てみましょう。 アルゴリズム countPairs(gcd, lcm): Begin    if lcm is nit divisible by gcd, then       r