Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับคู่ลำดับ (i,j) ที่ arr[i]*arr[j] > arr[i]+arr[j] ใน C++

ได้รับอาร์เรย์จำนวนเต็มบวก 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