Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 차이를 가진 쌍 찾기

<시간/>

배열 A가 있다고 가정하고 n개의 다른 요소가 있습니다. x와 y의 차이가 주어진 차이 d와 같도록 배열 A에서 쌍(x, y)을 찾아야 합니다. 요소 목록이 A =[10, 15, 26, 30, 40, 70]이고 주어진 차이가 30이라고 가정하면 쌍은 (10, 40) 및 (30, 70)

이 문제를 해결하기 위해 배열이 정렬되어 있다고 가정한 다음 왼쪽에서 시작하여 요소를 가리키는 두 개의 포인터를 가져옵니다. 처음에는 첫 번째 'i'가 첫 번째 요소를 가리키고 두 번째 'j'는 다음을 가리킵니다. 두 번째 요소. 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)