Chúng ta được cho một mảng Arr [] gồm các số nguyên có độ dài n. Mục đích là tìm số bộ ba (Arr [i], Arr [j], Arr [k]) sao cho tổng của hai số bất kỳ bằng số thứ ba.
a + b =c, trong đó a, b, c là các phần tử của Arr [] với các chỉ số i, j, k sao cho 0 <=i
Bộ ba với arr [x] + arr [y] =arr [z].
Tổng số sinh ba:4
Hai số đều có tổng =4 không bằng thứ ba =2.
Tổng số sinh ba:0
Chúng tôi lấy một mảng số nguyên Arr [] được khởi tạo với các số ngẫu nhiên.
Biến N lưu trữ độ dài của Arr [].
Hàm countTriplets (int arr [], int n) nhận một mảng, độ dài của nó trả về các bộ ba trong đó một trong các số có thể được viết thành tổng của hai số kia
Lấy biến số ban đầu là 0 cho số lượng bộ ba.
Traverse mảng sử dụng ba vòng lặp for cho mỗi phần tử của bộ ba.
Vòng ngoài cùng từ 0 <=i
Kiểm tra xem arr [i] + arr [j] ==arr [k] hoặc arr [i] + arr [k] ==arr [j] hoặc arr [k] + arr [j] ==arr [i] Nếu số lượng gia tăng thực sự.
Ở cuối tất cả các vòng đếm sẽ có tổng số bộ ba đáp ứng điều kiện.
Trả lại kết quả là số lượng. Đầu vào
arr[]= { 1,2,2,3,4 }, N=5
Đầu ra
Number of triplets: 4
Giải thích
Arr{}=[ 1,2,2,3,4 ] =(1,2,3) → 1+2=3
Arr{}=[ 1,2,2,3,4 ] =(1,2,3) → 1+2=3
Arr{}=[ 1,2,2,3,4 ] =(1,3,4) → 1+3=4
Arr{}=[ 1,2,2,3,4 ] =(2,2,4) → 2+2=4
Đầu vào
arr[]= {2,2,2,2,2}, N=5
Đầu ra
Number of triplets: 0
Giải thích
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
Ví dụ
#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; //length of array
cout <<endl<< "Number of triplets : "<<countTriplets(Arr,N);
return 0;
}
Đầu ra
Number of triplets: 4