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;
}

輸出

如果執行以上程式碼,將生成以下輸出:

Even Sum pairs: 4
Odd Sum pairs: 8

更新於:2020年8月29日

273 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.