Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm các bộ ba sao cho A [i]


Chúng ta có ba mảng A [], B [] và C []. Mục đích là tìm tất cả các bộ ba phần tử của các mảng này sao cho A [i]

Hãy cùng hiểu với các ví dụ.

Đầu vào -

A[]={1,4,5 } B = { 0,2,3 } C = { 0,6,7 }

Đầu ra - Số lượng sinh ba - 4

Giải thích -

Triplets such that A[i]<B[j]<C[k]
(1,2,6) , (1,2,7) , (1,3,6) , (1,3,7). Total 4 triplets.

Đầu vào

A[]={7,8,9} B = { 4,5,6 } C = { 1,2,3 }

Đầu ra - Số lượng sinh ba:0

Giải thích -

No Triplets that satisfy A[i]<B[j]<C[k]

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi lấy các mảng số nguyên A [], B [] và C [] có độ dài bằng nhau được khởi tạo với các số ngẫu nhiên.

  • Lấy biến N để lưu trữ độ dài của chúng.

  • Hàm countTriplets (int a [], int b [], int c [], int n) nhận cả ba mảng làm đầu vào với cùng độ dài n và trả về các bộ ba thỏa mãn điều kiện đã cho.

  • Truyền qua sử dụng ba vòng cho mỗi mảng.

  • Vòng lặp ngoài cùng 0 <=i

  • So sánh nếu a [i]

  • Ở cuối tất cả các số vòng lặp sẽ có các bộ ba sao cho a [i]

  • Kết quả là số lượt trả lại.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int countTriplets(int a[],int b[],int c[], int n){
   int count = 0;
   for (int i = 0; i < n; i++){
      for (int j = 0; j < n; j++){
         for (int k = 0; k < n; k++){
            if(a[i]<b[j] && b[j]<c[k])
               { count++; }
         }
      }
   }
   return count;
}
int main(){
   int A[]={ 1,2,3}; int B[]={ 2,3,2}; int C[]={ 4,3,1};
   int N=3; //length of array
   cout <<endl<< "Number of triplets : "<<countTriplets(A,B,C,N);
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Number of triplets : 6