इस समस्या में, हमें n अद्वितीय पूर्णांकों की एक सरणी दी गई है। और हमें उस सरणी के दो पूर्णांकों का योग ज्ञात करना है जिनकी आवृत्ति अधिकतम है। समस्या के कई समाधान हैं और आपको उन सभी को खोजने की आवश्यकता है।
Input : array = { 1, 12, 5, 7, 9, 11} Output : 16 12
स्पष्टीकरण - योग 16 और 12 दो बार आते हैं।
5 + 11 = 16 & 7 + 9 = 16 1 + 11 = 12 & 5 + 7 = 12
अब इस समस्या को हल करने के लिए, समस्या के प्रति हमारा दृष्टिकोण प्रत्येक योग जोड़ी की घटना की जाँच करना और फिर जोड़ी को अधिकतम बार प्रिंट करना है।
समस्या को हल करने के लिए कदम -
Step 1: Iterate over all pairs. Step 2: The occurrence of sum pairs is counted using hash-table. Step 3: After the interation process is done, the sum pair with maximum occurrence is printed.
उदाहरण
#include <bits/stdc++.h> using namespace std; void sumPairs(int a[], int n){ unordered_map<int, int> pairSum; for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { pairSum[a[i] + a[j]]++; } } int occur = 0; for (auto it : pairSum) { if (it.second > occur) { occur = it.second; } } for (auto it : pairSum) { if (it.second == occur) cout << it.first <<"\t"; } } int main(){ int a[] = { 1, 12, 5, 7, 9, 11 }; int n = sizeof(a) / sizeof(a[0]); cout<<"The sum pairs with max ccurence are : "<<endl; sumPairs(a, n); return 0; }
आउटपुट
अधिकतम आवृत्ति वाले योग जोड़े हैं -
16 12