समस्या विवरण
दो सरणियां दी गई हैं जिनमें अलग-अलग संख्या में तत्व हैं। हमें एक जोड़ी (x, y) ढूंढनी है जहां x पहली सरणी में है और y दूसरी सरणी में है। इस जोड़ी को स्वैप करने के बाद दोनों सरणियों का योग बराबर होना चाहिए।
उदाहरण: सरणी A = [4, 1, 2, 2, 1, 1] (योग = 11) और सरणी B = [3, 3, 6, 3] (योग = 15)। जोड़ी (1, 3) को स्वैप करने पर: A = [4, 3, 2, 2, 1, 1] (योग = 13), B = [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);
return 0;
}
आउटपुट
(1, 3)