在C ++中找到具有给定差异的一对

考虑我们有一个数组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]与n相同时,打印对,如果A [j] – A [i] <n,则将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);

}

输出结果

(10, 40)

(40, 70)

以上是 在C ++中找到具有给定差异的一对 的全部内容, 来源链接: utcz.com/z/316298.html

回到顶部