요소 수가 다른 두 개의 배열이 있다고 가정합니다. 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)