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

นับทริปเล็ตที่ผลคูณเท่าค่าที่กำหนด (อนุญาตให้ซ้ำค่า) ใน C++

ได้รับอาร์เรย์ Arr[] และค่า p ต้องการนับทริปเล็ต (i

ตัวอย่าง

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

เอาต์พุต: 3

คำอธิบาย: (1,2,2), (1,4,1), (2,2,1) — index ต่างกันนับคนละคู่

อินพุต: arr[] = {1, 1, 2, 1, 2, 2}, p = 8

เอาต์พุต: 1 (2,2,2)

แนวทาง

  • ลูป 3 ชั้น i=0..n-3, j=i+1..n-2, k=j+1..n-1
  • คำนวณ prod = arr[i]×arr[j]×arr[k] ถ้า == p เพิ่มตัวนับ

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

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

int countTriplets(int arr[], int n, int p) {
    int count = 0, prod = 1;
    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++) {
                prod = arr[i] * arr[j] * arr[k];
                if (prod == p) count++;
            }
        }
    }
    return count;
}

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

ผลลัพธ์

Number of triplets: 18