在 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

回到顶部