মনে করুন একটি অ্যারে A আছে, যেখানে n সংখ্যক ভিন্ন উপাদান রয়েছে। আমাদের কাজ হল অ্যারে A থেকে একটি জোড়া (x, y) খুঁজে বের করা, যাতে x এবং y-এর পার্থক্য দেওয়া পার্থক্য d-এর সমান হয়। উদাহরণস্বরূপ, যদি উপাদানগুলোর তালিকা A = [10, 15, 26, 30, 40, 70] হয় এবং দেওয়া পার্থক্য 30 হয়, তবে জোড়াগুলো হবে (10, 40) এবং (30, 70)।
সমাধানের পদ্ধতি
এই সমস্যাটি সমাধান করতে আমরা ধরে নেব অ্যারেটি সর্ট করা আছে। তারপর বাম দিক থেকে শুরু করে দুটি পয়েন্টার ব্যবহার করব। প্রাথমিকভাবে প্রথম পয়েন্টার 'i' প্রথম উপাদানকে নির্দেশ করবে এবং দ্বিতীয় পয়েন্টার 'j' দ্বিতীয় উপাদানকে নির্দেশ করবে।
- যদি A[j] – A[i] দেওয়া পার্থক্যের সমান হয়, তবে জোড়াটি প্রিন্ট করুন।
- যদি A[j] – A[i] < দেওয়া পার্থক্য হয়, তবে j কে 1 বাড়ান।
- অন্যথায় i কে 1 বাড়ান।
উদাহরণ কোড
#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);
return 0;
}
আউটপুট
(10, 40) (30, 70)