ได้รับอาร์เรย์ n ตัว ต้องการนับคู่ลำดับ (arr[x], arr[y]) ที่ผลรวมเป็นเลขคู่หรือเลขคี่ คู่ (i,j) และ (j,i) นับแยกกัน
ตัวอย่าง
อินพุต: Arr[] = {1, 1, 2, 3}, N = 4
เอาต์พุต: ผลรวมคู่: 6, ผลรวมคี่: 6
อินพุต: Arr[] = {2, 2, 2}, N = 3
เอาต์พุต: ผลรวมคู่: 6, ผลรวมคี่: 0
แนวทาง
- ลูปซ้อน 2 ชั้น i=0..n-2, j=i+1..n-1
- คำนวณ sum = arr[i]+arr[j]
- ถ้า sum%2==0 เพิ่ม count1 += 2 (นับ (i,j) และ (j,i))
- มิฉะนั้น เพิ่ม count2 += 2
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
using namespace std;
void countPairs(int arr[], int n) {
int count1 = 0, count2 = 0;
for (int i = 0; i < n-1; i++) {
for (int j = i+1; j < n; j++) {
int sum = arr[i] + arr[j];
if (sum % 2 == 0) count1 += 2;
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