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
广告