इस समस्या में, हमें n अद्वितीय पूर्णांकों की एक सरणी दी गई है। और हमें सरणी के दो पूर्णांकों का योग ढूंढना है जिसकी अधिकतम आवृत्ति है। समस्या के कई समाधान हैं और आपको उन सभी को ढूंढना होगा।
इनपुट: सरणी = { 1, 12, 5, 7, 9, 11} आउटपुट: 16 12 व्याख्या - योग 16 और 12 दो बार आते हैं।
5 + 11 = 16 & 7 + 9 = 16 1 + 11 = 12 & 5 + 7 = 12
अब इस समस्या को हल करने के लिए, हमारा दृष्टिकोण हर योग युग्म की घटना की जांच करना और फिर अधिकतम बार आने वाले युग्म को प्रिंट करना है।
समस्या हल करने के चरण -
चरण 1: सभी युग्मों पर पुनरावृति करें। चरण 2: हैश-टेबल का उपयोग करके योग युग्म की घटना गिनें। चरण 3: पुनरावृति प्रक्रिया पूरी होने के बाद, अधिकतम घटना वाले योग युग्म को प्रिंट करें।
उदाहरण
#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