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

นับทริปเล็ตที่ผลรวมสองตัวเท่าตัวที่สาม ใน C++

ได้รับอาร์เรย์ Arr[] ความยาว n ต้องการนับทริปเล็ต (i,j,k) ที่ i

ตัวอย่าง

อินพุต: arr[] = {1, 2, 2, 3, 4}, N = 5

เอาต์พุต: 4

คำอธิบาย: (1,2,3), (1,2,3), (1,3,4), (2,2,4)

อินพุต: arr[] = {2, 2, 2, 2, 2}, N = 5

เอาต์พุต: 0 (2+2=4 ≠ 2)

แนวทาง

  • ลูป 3 ชั้น i=0..n-3, j=i+1..n-2, k=j+1..n-1
  • ตรวจสอบ arr[i]+arr[j]==arr[k] || arr[i]+arr[k]==arr[j] || arr[k]+arr[j]==arr[i]

ตัวอย่างโค้ด C++

#include <bits/stdc++.h>
using namespace std;

int countTriplets(int arr[], int n) {
    int count = 0;
    for (int i = 0; i < n-2; i++) {
        for (int j = i+1; j < n-1; j++) {
            for (int k = j+1; k < n; k++) {
                if (arr[i]+arr[j]==arr[k] || arr[j]+arr[k]==arr[i] || arr[k]+arr[i]==arr[j]) {
                    count++;
                }
            }
        }
    }
    return count;
}

int main() {
    int Arr[] = {1, 2, 2, 3, 4};
    int N = 5;
    cout << endl << "Number of triplets: " << countTriplets(Arr, N);
    return 0;
}

ผลลัพธ์

Number of triplets: 4