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

C++에서 동일한 자릿수 합계를 가진 두 배열의 고유한 쌍 계산

<시간/>

정수 값을 갖는 arr_1[] 및 arr_2[]라는 두 개의 배열이 제공되고 작업은 자릿수의 합이 동일한 개별 쌍의 수를 계산하는 것입니다. 즉, arr_1[]에서 하나의 값을 선택하고 arr_2[]에서 두 번째 값을 선택하여 쌍을 형성하고 두 값의 합이 같아야 합니다.

배열은 같은 유형의 요소에 대한 고정 크기 순차 컬렉션을 저장할 수 있는 일종의 데이터 구조입니다. 배열은 데이터 모음을 저장하는 데 사용되지만 종종 배열을 같은 유형의 변수 모음으로 생각하는 것이 더 유용합니다.

Input − int arr_1[] = {1, 22, 42, 17}
   Int arr_2[] = {1, 31, 6, 8}
Output − count is 4

설명 - 자릿수의 합이 같은 총 4개의 쌍이 있으며 (1, 1), (22, 31), (42, 6) 및 (17, 8)입니다.

Input − int arr_1[] = {1, 22, 42, 17}
   Int arr_2[] = {2, 78, 6, 18}
Output − count is 1

설명 - 총 자릿수의 합이 같은 쌍은 (42, 6) 하나만 있습니다.

Input − int arr_1[] = {1, 22, 42, 17}
   Int arr_2[] = {2, 78, 16, 18}
Output − count is 0

설명 − 자릿수의 합이 같은 쌍이 없으므로 개수는 0입니다.

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

  • arr_1[] 및 arr_2[]

    라는 두 개의 배열을 만듭니다.
  • 배열의 요소에 따라 정수 값을 반환하는 length() 함수를 사용하여 두 배열의 길이를 계산합니다.

  • st

    라고 가정해 봅시다.
  • i에서 0으로 루프를 시작하고 arr_1[]

    의 크기보다 작습니다.
  • 루프 내에서 j에 대해 0과 j가 arr_2[]보다 작은 루프를 시작합니다.

  • Sum(arr[i]) =sum(arr_2[j])인지 확인한 다음 arr_1[i]가 arr_2[j]보다 작은지 확인한 다음 insert(make_pair(arr_1[i], arr_2[j])

  • 그렇지 않으면 insert(make_pair(arr_2[j], arr_1[i])).

  • st.size() 반환

  • 결과를 인쇄하십시오.

예시

#include <iostream>
#include <set>
using namespace std;
// Function to find the
// sum of digits of a number
int sumdigits(int n){
   int sum = 0;
   while (n > 0){
      sum += n % 10;
      n = n / 10;
   }
   return sum;
}
//function to count the number of pairs
int paircount(int arr_1[], int arr_2[], int size1, int size2){
   // set is used to avoid duplicate pairs
   set<pair<int, int> > myset;
   for (int i = 0; i < size1; i++){
      for (int j = 0; j < size2; j++){
         // check sum of digits
         // of both the elements
         if (sumdigits(arr_1[i]) == sumdigits(arr_2[j])){
            if (arr_1[i] < arr_2[j]){
               myset.insert(make_pair(arr_1[i], arr_2[j]));
            } else{
               myset.insert(make_pair(arr_2[j], arr_1[i]));
            }
         }
      }
   }
   // return size of the set
   return myset.size();
}
// Driver code
int main(){
   int arr_1[] = { 1, 22, 42, 17 };
   int arr_2[] = { 5, 31, 6, 8 };
   int size1 = sizeof(arr_1) / sizeof(arr_1[0]);
   int size2 = sizeof(arr_2) / sizeof(arr_2[0]);
   cout <<"count is "<<paircount(arr_1, arr_2, size1, size2);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 출력 &miuns;

을 얻게 됩니다.
count is 3