ได้รับอาร์เรย์จำนวนเต็มบวก n ตัว ต้องการนับคู่ลำดับ (i,j) ที่ 0 ≤ i < j < n และ arr[i]×arr[j] > arr[i]+arr[j]
ตัวอย่าง
อินพุต: Arr[] = {1, 1, 2, 3}, N = 4
เอาต์พุต: 1
คำอธิบาย: คู่ที่ถูกต้องคือ (2,3) เพราะ 2×3=6 > 2+3=5
อินพุต: Arr[] = {2, 2, 2}, N = 3
เอาต์พุต: 0 (2×2=4, 2+2=4 ไม่มากกว่า)
แนวทาง
- ใช้ลูป
forซ้อน 2 ชั้น:iจาก 0 ถึง n-2,jจาก i+1 ถึง n-1 - คำนวณผลคูณและผลรวม ถ้าผลคูณ > ผลรวม เพิ่มตัวนับ
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int countPairs(int arr[], int n) {
int count = 0;
for (int i = 0; i < n-1; i++) {
for (int j = i+1; j < n; j++) {
if (arr[i] * arr[j] > arr[i] + arr[j]) {
count++;
}
}
}
return count;
}
int main() {
int arr[] = {1, 2, 3, 2};
int len = sizeof(arr) / sizeof(int);
cout << "Count of number of pairs: " << countPairs(arr, len);
return 0;
}
ผลลัพธ์
Count of number of pairs: 2