C++中满足给定条件的数组有效对的计数


给定一个包含 N 个元素的数组 arr[]。目标是找到所有满足某些条件的有效对 (Arr[i],Arr[j]) 的数量。

  • 如果满足以下条件,则对 Arr[i],Arr[j] 无效:
  • Arr[i]==Arr[j]
  • Arr[i]+Arr[j] 为偶数

i+j<120

**注意** − Arr[i],Arr[j] 和 Arr[j],Arr[i] 将被计为一对。有效对具有 i!=j 让我们通过示例来理解。

Arr[]= { 3,2,1,2,4,3 } N=4

输入

Count of valid pairs: 2

输出

解释

Arr[0] & Arr[4] → (3,3) here Arr[i]==Arr[j] & 3+3 is even also i!=j and i+j<120
Arr[1] & Arr[3] → (2,2) here Arr[i]==Arr[j] & 2+2 is even also i!=j and i+j<120

**注意** − Arr[i],Arr[j] 和 Arr[j],Arr[i] 将被计为一对。有效对具有 i!=j 让我们通过示例来理解。

Arr[]= { 1,2,3,4,5,6 } N=6

输入

Count of valid pairs: 0

输出

有效对为:

元素不重复。不存在 i!=j 且类型为 ( a,a ) 的对。

  • 下面程序中使用的方案如下
  • 我们使用随机数初始化一个整数数组 Arr[]。
  • 获取一个变量 n,它存储 Arr[] 的长度。
  • 函数 countPairs(int arr[], int n) 以数组及其长度作为输入,并返回有效且满足所需条件的对。
  • 使用两个 for 循环遍历数组以获取每一对的每个元素。
  • 外循环从 0<=i<n-1 开始,内循环从 i<j<n 开始。
  • 计算 arr[i], arr[j] 的和 assum=(arr[i]+aar[j])。
  • 检查对是否有效。比较 i!=j 和 sum%2==0 以及 i+j<120。
  • 现在检查 arr[i]==arr[j]。递增计数。
  • 在所有循环结束时,count 将包含有效对的总数。

返回 count 作为结果。

示例

#include <bits/stdc++.h>
using namespace std;
int countPairs(int arr[], int n){
   int count=0;
   for(int i=0;i<n;i++){
      for(int j=i+1;j<n;j++) //j=i+1 we don't have to check i!=j{
         int sum=arr[i]+arr[j];
         //valid pairs have i!=j
         if( sum%2==0 && i+j<120){
            if( arr[i]==arr[j] ) //valid pair{
               count++;
               cout<<endl<<" a:"<<arr[i]<<"b: "<<arr[j];
            }
         }
      }
   }
   return count;
}
int main(){
   int arr[] = {1,2,3,2,4,1,4 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout <<endl<<"Valid pairs in array:"<<countPairs(arr, n);
   return 0;
}

输入

Valid pairs in array:
a:1b: 1
a:2b: 2
a:4b: 43

Sunidhi Bansal

更新于: 2020年9月16日

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告