计算对数(i,j),以使C ++中的arr [i] * arr [j]> arr [i] + arr [j]
给定n个正数的数组。目标是对有序对(i,j)进行计数,以使arr[i]*arr[j]>arr[i]+arr[j]且0<=i<j<n。其中n是数组中元素的数量。
我们将对每个对数使用两个for循环遍历数组。现在计算arr[i]和arr[j]的总和。如果乘积大于总和计数。
让我们通过示例来理解。
输入-Arr[]={1,1,2,3}N=4
输出-对数-1
说明-只有有效对是-(2,3)
2*3=6 > 2+3=5
输入-Arr[]={2,2,2}N=3
输出-对数-0
说明-2*2和2+2均为4。
以下程序中使用的方法如下
我们采用以正数初始化的整数数组arr[]。
取一个变量n,它存储Arr[]的长度。
函数countPairs(intarr[],intn)接受一个数组,将其长度作为输入并打印乘积>sum的对数。
对数组中的每个元素使用两个for循环遍历数组。
外循环从0<=i<n-1,内循环i<j<n
检查arr[i]*arr[j]>arr[i]+arr[j]。如果为true,则增加计数。
在所有循环的末尾,count的对总数为product>sum
返回计数作为结果。
示例
#include <bits/stdc++.h> #include <math.h> using namespace std; int countPairs(int arr[], int n){ int count=0; int sum=0; for(int i=0;i<n-1;i++){ for(int j=i+1;j<n;j++){ if(arr[i]*arr[j]>arr[i]+arr[j]) //condition { count++; } } } return count; } int main(){ int arr[] = { 1,2,3,2 }; int len = sizeof(arr) / sizeof(int); cout<<"对数计数:"<<countPairs(arr, len); return 0; }
输出结果
如果我们运行上面的代码,它将生成以下输出-
对数计数:2