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