Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số cặp có thứ tự với Tổng chẵn và Lẻ trong C ++


Chúng ta được cung cấp một mảng gồm n số dương, mục tiêu là đếm các cặp có thứ tự (arr [x], arr [y]) với tổng của arr [x] và arr [y] chẵn hoặc lẻ. Cặp (arr [i], arr [j]) và (arr [j], arr [i] được tính là riêng biệt.

Chúng tôi sẽ duyệt qua mảng bằng cách sử dụng hai vòng lặp for cho mỗi số cặp. Bây giờ, hãy tính tổng, nếu đó là số tăng chẵn bằng 2 cho các tổng chẵn, còn lại thì đếm gia tăng bằng 2 cho các tổng lẻ.

Hãy cùng hiểu với các ví dụ.

Đầu vào - Arr [] ={1,1,2,3} N =4

Đầu ra - Đếm các tổng của tích chẵn - 6 Đếm các cặp tổng lẻ - 6

Giải thích - Các cặp tổng lẻ hợp lệ là -

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

Đầu vào - Arr [] ={2,2,2} N =3

Đầu ra - Đếm các cặp tổng chẵn - 6 Đếm các cặp tổng lẻ - 0

Giải thích - Các cặp sản phẩm chẵn hợp lệ là -

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.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi lấy một mảng số nguyên arr [] được khởi tạo với các số ngẫu nhiên.

  • Lấy một biến n lưu trữ độ dài của Arr [].

  • Hàm countPairs (int arr [], int n) nhận một mảng, độ dài của nó làm đầu vào và in ra số lượng các cặp có tổng chẵn và lẻ.

  • Traverse mảng sử dụng hai vòng lặp for cho mỗi phần tử của cặp.

  • Vòng ngoài từ 0 <=i

  • Kiểm tra xem arr [i] + arr [j]% 2 ==0 hay không. Số tăng 1 để đếm các cặp tổng chẵn bằng 2 như arr [i], arr [j] và arr [j], arr [i] sẽ là hai cặp.

  • Nếu điều kiện trên là sai số gia tăng đếm 2 cho các cặp tổng lẻ bằng 2.

  • Ở cuối tất cả các vòng lặp, đếm 1 sẽ có tổng số các cặp có tổng chẵn và đếm 2 sẽ có tổng số các cặp có tổng lẻ

  • In kết quả là count1 và count2.

Ví dụ

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

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Even Sum pairs: 4
Odd Sum pairs: 8