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

합이 C++에서 주어진 값 x와 같은 4개의 정렬된 배열에서 4배 계산

<시간/>

네 개의 배열 A[], B[], C[] 및 D[]가 제공됩니다. 목표는 A[i]+B[j]+C[k]+D[l] =x가 되도록 이러한 배열의 모든 4배 요소를 찾는 것입니다. 4개의 배열은 모두 동일한 수의 요소 N을 갖습니다.

각 배열을 한 번 탐색하고 A[i]+B[j]+C[j]+D[l]==x인지 비교하여 이를 수행합니다. true인 경우 카운트가 증가합니다.

예를 들어 이해합시다.

입력

A[]={ 1,2,3}; B[]={ 2,3,2}; C[]={ 4,3,1}; D[]={ 3,1,1 }; X=12

출력

Count of Quadruples: 4

설명

Quadruples such as ( A[i] B[j] C[k] D[l] ) are:
(2 3 4 3) , (3 2 4 3), (3 3 3 3), (3 2 4 3)
Number of quadruples : 4

입력

A[]={ 1,1,1}; B[]={ 2,2,2}; C[]={ 3,3,3}; D[]={ 4,4,4 }; X=15

출력

Count of Quadruples: 0

설명

No such elements could be paired.

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

  • 임의의 숫자로 초기화된 동일한 길이의 정수 배열 A[], B[], C[] 및 D[]를 사용합니다.

  • 변수 N을 사용하여 길이를 저장합니다.

  • countQuad(int a[],int b[],int c[],d[],int x, int n) 함수는 길이가 n인 모든 배열을 입력으로 받아 개수를 반환합니다.

  • 각 배열에 대해 4개의 루프를 사용하여 순회합니다.

  • 가장 바깥쪽 루프 0<=i

  • a[i]+b[j]+c[k]+d[l]==x인지 비교합니다. true인 경우 카운트가 증가합니다.

  • 모든 루프가 끝나면 합계가 x인 4배가 카운트됩니다.

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

예시

#include <bits/stdc++.h>
using namespace std;
int countQuads(int a[],int b[],int c[],int d[],int x, 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++){
            for (int l = 0; l < n; l++){
               int sum=a[i]+b[j]+c[k]+d[l];
               if(sum==x){
                  count++;
                  cout<<endl<<a[i]<<" "<<b[j]<<" "<<c[k]<<" "<<d[l];}
               }
            }
         }
      }
   return count;
}
int main(){
   int A[]={ 1,1,1}; int B[]={ 2,2,2}; int C[]={ 3,3,3}; int D[]={ 4,4,4 };
   int X=15;
   int N=3; //length of each array
   cout <<endl<< "Number of quadruples : "<<countQuads(A,B,C,D,X,N);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Number of quadruples : 0