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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP