我们得到了一个数字数组。目标是找到数组的一对元素,使它们保持条件
如果 (i*arr[i] > j*arr[j]) 那么 (arr[i],arr[j]) 是一个有效的对。
如果数组是 [ 5,4,3,2,1 ] 则对将是 [3,1] 和 [2,1]。
让我们通过例子来理解。
输入- arr[] = [ 1,5,4,1,2,8,3 ]
输出- 数组中包含 i*arr[i] > j*arr[j] 的对数为 - 3
解释- 对是 (5,1), (4,1), (8,3)
输入- arr[] = [ -1,-2,3,4,5,6 ]
输出- 数组中包含 i*arr[i] > j*arr[j] 的对数为 - 1
说明- 对是 (-1,-2)
我们将使用 for 循环从 1 到 N 遍历两次。对于每个 i 和 arr[i] 搜索 j 和 arr[j] 使得条件 i*arr[i]>j*arr[j] ( and i!=j )。如果条件为真,则增加计数。
取一个整数数组。
函数 condition_pair(int arr[], int size) 获取数组及其大小并返回满足条件的对数。
取初始计数为 0。
从 i=1 遍历到 i <size-1
从 j=i+1 到 j<size 遍历。
如果 ( i*arr[i] ) > ( j*arr[j] ) 为真。递增计数。
对于每个 i 和 j 计算 temp= (i*j)%(i+j)。
在两次迭代结束后,count 将得到这样对的总数。
返回计数作为结果。
#include <iostream> using namespace std; int condition_pair(int arr[], int size){ int count = 0; for (int i = 0; i < size - 1; i++){ for (int j = i + 1; j < size; j++){ if(i*arr[i] > j*arr[j]){ count++; } } } return count; } int main(){ int arr[] = { 2, 4, 1, 9, 6 }; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count of pairs in an array that hold i*arr[i] > j*arr[j] are: "<<condition_pair(arr, size); return 0; }输出结果
如果我们运行上面的代码,它将生成以下输出 -
Count of pairs in an array that hold i*arr[i] > j*arr[j] are: 2