Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาคู่ที่มีความแตกต่างที่กำหนดใน C++


พิจารณาว่าเรามีอาร์เรย์ A มีองค์ประกอบที่แตกต่างกัน n รายการ เราต้องหาคู่ (x, y) จากอาร์เรย์ A เพื่อให้ผลต่างระหว่าง x และ y เหมือนกับค่าความแตกต่าง d ที่กำหนด สมมติว่ารายการองค์ประกอบเช่น 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)