用C ++计算带有偶数和奇数和的有序对的数量

我们给了一个n个正数的数组。目标是用arr [x]和arr [y]之和为偶数或奇数来计算有序对(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。偶数和对对的计数的递增计数1作为arr [i],arr [j]和arr [j],arr [i]将为2对。

  • 如果以上条件为假,则奇数和对的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;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Even Sum pairs: 4
Odd Sum pairs: 8