在 C++ 中计算包含 i*arr[i] > j*arr[j] 的数组中的对
我们得到了一个数字数组。目标是找到数组的一对元素,使它们保持条件
如果(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](andi!=j)。如果条件为真,则增加计数。
取一个整数数组。
函数condition_pair(intarr[],intsize)获取数组及其大小并返回满足条件的对数。
取初始计数为0。
从i=1遍历到i
从j=i+1到j
如果(i*arr[i])>(j*arr[j])为真。递增计数。
对于每个i和j计算temp=(i*j)%(i+j)。
在两次迭代结束后,count将得到这样对的总数。
返回计数作为结果。
示例
#includeusing 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: "< 输出结果 如果我们运行上面的代码,它将生成以下输出-
Count of pairs in an array that hold i*arr[i] > j*arr[j] are: 2