C++中统计奇偶和的有序对数量


给定一个包含n个正数的数组。目标是统计和为偶数或奇数的有序对(arr[x], arr[y])的数量。对(arr[i],arr[j])和(arr[j],arr[i])被视为不同的对。

我们将使用两个for循环遍历数组以获取每对数字。现在计算它们的和,如果和为偶数,则将偶数和计数加2;否则,将奇数和计数加2。

让我们通过例子来理解。

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

输出− 偶数和对的数量 − 6 奇数和对的数量 − 6

解释 − 有效的奇数和对为 −

Arr[0] & Arr[1] → (1,1) Arr[1] & Arr[0] → (1,1) count=2
Arr[0] & Arr[3] → (1,3) Arr[3] & Arr[0] → (3,1) count=2
Arr[1] & Arr[3] → (1,3) Arr[3] & Arr[1] → (3,1) count=2 Total=6
Valid even sum pairs are:
Arr[0] & Arr[2] → (1,2) Arr[2] & Arr[0] → (2,1) count=2
Arr[1] & Arr[2] → (1,2) Arr[2] & Arr[1] → (2,1) count=2
Arr[2] & Arr[3] → (2,3) Arr[3] & Arr[2] → (3,2) count=2 Total=6

输入− Arr[]= { 2,2,2 } N=3

输出 − 偶数和对的数量 − 6 奇数和对的数量 − 0

解释 − 有效的偶数和对为 −

Arr[0] & Arr[1] → (2,2) Arr[1] & Arr[0] → (2,2) count=2
Arr[1] & Arr[2] → (2,2) Arr[2] & Arr[1] → (2,2) count=2
Arr[2] & Arr[3] → (2,2) Arr[3] & Arr[2] → (2,2) count=2 Total=6
No odd sum as all elements are even.

下面程序中使用的算法如下

  • 我们使用一个用随机数初始化的整数数组arr[]。

  • 使用变量n存储Arr[]的长度。

  • 函数countPairs(int arr[], int n)接收一个数组及其长度作为输入,并打印具有偶数和和奇数和的对的数量。

  • 使用两个for循环遍历数组中的每个元素对。

  • 外循环从0<=i<n-1,内循环i<j<n

  • 检查arr[i]+arr[j]%2==0。如果为真,则将偶数和对计数count1加2,因为arr[i],arr[j]和arr[j],arr[i]将是两对。

  • 如果上述条件为假,则将奇数和对计数count2加2。

  • 所有循环结束后,count1将包含具有偶数和的对的总数,count2将包含具有奇数和的对的总数。

  • 打印count1和count2作为结果。

示例

 在线演示

#include <bits/stdc++.h>
using namespace std;
void countPairs(int arr[], int n){
   int count1=0; //even sum pairs
   int count2=0; //odd sum pairs
   int sum=0;
   for(int i=0;i<n-1;i++){
      for(int j=i+1;j<n;j++){
         sum=arr[i]+arr[j];
         if(sum%2==0) //sum is even
            { count1+=2; } //(a,b) and (b,a) as two pairs
         else
            { count2+=2; }
      }
   }
   cout<<"Even Sum pairs: "<<count1;
   cout<<endl<<"Odd Sum pairs: "<<count2;
}
int main(){
   int arr[] = { 1,2,3,2 };
   int n = sizeof(arr) / sizeof(int);
   countPairs(arr, n);
   return 0;
}

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

输出

如果运行以上代码,将生成以下输出:

Even Sum pairs: 4
Odd Sum pairs: 8

更新于:2020年8月29日

273 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告