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

Đếm bộ ba sao cho một trong các số có thể được viết thành tổng của hai số còn lại trong C ++

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

Đầu vào

arr[]= { 1,2,2,3,4 }, N=5

Đầu ra

Number of triplets: 4

Giải thích

Bộ ba với arr [x] + arr [y] =arr [z].

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

Tổng số sinh ba:4

Đầu vào

arr[]= {2,2,2,2,2}, N=5

Đầu ra

Number of triplets: 0

Giải thích

Hai số đều có tổng =4 không bằng thứ ba =2.

Tổng số sinh ba:0

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 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.

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