在 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] ( 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
以上是 在 C++ 中计算包含 i*arr[i] > j*arr[j] 的数组中的对 的全部内容, 来源链接: utcz.com/z/311476.html