在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