정수 값을 갖는 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