Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 숫자 중 하나를 다른 두 개의 합으로 쓸 수 있도록 세 개의 숫자를 센다.

<시간/>

길이가 n인 정수 배열 Arr[]이 제공됩니다. 목표는 두 숫자의 합이 세 번째 숫자와 같도록 세 쌍(Arr[i],Arr[j],Arr[k])의 수를 찾는 것입니다.

a+b=c, 여기서 a,b,c는 인덱스 i,j,k가 있는 Arr[]의 요소이며 0<=i

입력

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

출력

Number of triplets: 4

설명

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

총 세 쌍둥이:4

입력

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

출력

Number of triplets: 0

설명

모든 두 숫자의 합은 4이며 세 번째=2가 아닙니다.

총 세쌍둥이:0

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 임의의 숫자로 초기화된 정수 배열 Arr[]을 사용합니다.

  • 변수 N은 Arr[]의 길이를 저장합니다.

  • countTriplets(int arr[],int n) 함수는 배열을 취하고 길이는 숫자 중 하나를 다른 두 개의 합으로 쓸 수 있는 삼중항을 반환합니다.

  • 세 쌍의 수에 대해 초기 변수 개수를 0으로 취합니다.

  • 트리플렛의 각 요소에 대해 세 개의 for 루프를 사용하여 배열을 탐색합니다.

  • 0<=i

  • arr[i]+arr[j]==arr[k] 또는 arr[i]+arr[k]==arr[j] 또는 arr[k]+arr[j]==arr[i]인지 확인 true thenincrement 카운트.

  • 모든 루프가 끝나면 조건을 충족하는 총 3중항 수가 계산됩니다.

  • 카운트를 결과로 반환합니다.

예시

#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;
}

출력

Number of triplets : 4