Xét ta có một mảng A, có n phần tử khác nhau. Chúng ta phải tìm một cặp (x, y) từ mảng A sao cho hiệu giữa x và y giống với hiệu cho trước d. Giả sử danh sách các phần tử giống như A =[10, 15, 26, 30, 40, 70] và hiệu số cho trước là 30, thì cặp này sẽ là (10, 40) và (30, 70)
Để giải quyết vấn đề này, chúng ta sẽ giả định rằng mảng đã được sắp xếp, sau đó bắt đầu từ bên trái, chúng ta sẽ lấy hai con trỏ trỏ đến các phần tử trỏ, ban đầu con đầu tiên 'i' sẽ trỏ đến phần tử đầu tiên và con thứ hai 'j' sẽ trỏ đến yếu tố thứ hai. khi A [j] - A [i] giống n thì in cặp, nếu A [j] - A [i] Ví dụ
#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);
}
Đầu ra
(10, 40)
(40, 70)