विचार करें कि हमारे पास विभिन्न तत्वों के साथ दो सरणियाँ हैं। हमें तत्वों की एक जोड़ी (x, y) ढूंढनी है, जहां x पहली सरणी में मौजूद है, और y दूसरी सरणी में मौजूद है। जोड़ी को इस तरह चुना जाएगा कि इन दो सरणियों के बीच तत्वों की अदला-बदली के बाद, इन दो सरणियों का योग समान होगा।
मान लीजिए कि पहली एरे ए में [4, 1, 2, 2, 1, 1] और बी के पास [3, 3, 6, 3] है, अब ए का योग 11 है और बी का योग 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)