요소 수가 다른 두 개의 배열이 있다고 가정합니다. x는 첫 번째 배열에 있고 y는 두 번째 배열에 있는 한 쌍의 요소(x, y)를 찾아야 합니다. 이 두 배열 사이의 요소를 교환한 후 이 두 배열의 합이 같도록 쌍이 선택됩니다.
첫 번째 배열 A가 [4, 1, 2, 2, 1, 1]이고 B가 [3, 3, 6, 3]이라고 가정하면 이제 A의 합은 11이고 B의 합은 15입니다. (1, 3)과 같은 쌍, 이 두 배열 사이에서 이 값을 교환하면 합계는 [4, 3, 2, 2, 1, 1] =13, [1, 3, 6, 3]이 됩니다. =13, 동일합니다.
이 문제를 해결하기 위해 배열을 반복하고 모든 값 쌍을 확인하고 새 합계를 비교하거나 해당 차이가 있는 다른 쌍을 찾습니다.
예시
#include<iostream>
using namespace std;
int arraySum(int arr[], int n) {
int sum = 0;
for (int i = 0; i < n; i++)
sum += arr[i];
return sum;
}
void getPair(int A[], int n, int B[], int m) {
int sum_first = arraySum(A, n);
int sum_second = arraySum(B, m);
int newsum_first, newsum_second, first, second;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
newsum_first = sum_first - A[i] + B[j];
newsum_second = sum_second - B[j] + A[i];
if (newsum_first == newsum_second) {
first = A[i];
second = B[j];
}
}
}
cout << "(" << first << ", " << second << ")";
}
int main() {
int A[] = { 4, 1, 2, 2, 1, 1 };
int n = sizeof(A) / sizeof(A[0]);
int B[] = { 3, 3, 6, 3 };
int m = sizeof(B) / sizeof(B[0]);
getPair(A, n, B, m);
} 출력
(1, 3)