हमें एक सरणी दी गई है, मान लीजिए arr[] किसी भी संबंधित आकार के पूर्णांक मानों की और कार्य दिए गए सरणी में उपलब्ध विशिष्ट जोड़ों की संख्या की गणना करना है जिनका योग उसी सरणी में मौजूद है।
याद रखने योग्य बिंदु
एक जोड़ी को समान तत्वों के साथ एक बार गिना जाएगा चाहे उनका क्रम कुछ भी हो। उदाहरण के लिए, (3,2) और (2,3) को 1 के रूप में गिना जाएगा।
यदि कोई संख्या सरणी में कई बार आती है तो उसे एक जोड़ी बनाने के लिए ठीक दो बार माना जाएगा। उदाहरण के लिए, यदि किसी सरणी में तत्व {2, 2, 2, 2} हैं तो जोड़ी (2,2) होगी और इसे 1 के रूप में गिना जाएगा।
उदाहरण के लिए
इनपुट - int arr = {6, 4, 10, 14} आउटपुट - गिनती 2 है
व्याख्या - सरणी में योग वाले जोड़े (6,4) और (10,4) हैं इसलिए गिनती 2 है
इनपुट - int arr = {6, 6, 6 ,6, 6, 13} आउटपुट - गिनती 0 है
व्याख्या - उसी सरणी में योग वाली कोई जोड़ी नहीं है। इसलिए, गिनती 0 है।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
एक सरणी बनाएं, मान लीजिए arr[]
length() फंक्शन का उपयोग करके सरणी की लंबाई की गणना करें जो सरणी में तत्वों के अनुसार एक पूर्णांक मान लौटाएगा।
एक अस्थायी चर लें जो तत्वों की गिनती को संग्रहीत करेगा।
एक मैप टाइप चर बनाएं, मान लीजिए mp
i को 0 से शुरू करके और i के सरणी के आकार से कम होने तक लूप शुरू करें
पेयर्स टाइप का एक और मैप चर बनाएं, मान लीजिए par
i को 0 से शुरू करके और i के सरणी के आकार से कम होने तक लूप शुरू करें
लूप के अंदर, j को i+1 से शुरू करके और j के सरणी के आकार से कम होने तक एक और लूप शुरू करें
लूप के अंदर, जांचें कि क्या mp[arr[i]+arr[j]] > 0 AND pr[{arr[i], arr[j] }] =0 तो count को 1 से बढ़ाएं
par[{ arr[i], arr[j] }] को 1 से बढ़ाएं
par[{ arr[j], arr[i] }] को 1 से बढ़ाएं
count लौटाएं
परिणाम प्रिंट करें।
उदाहरण
#include <iostream>
#include <map>
using namespace std;
// ar[0..n-1] में उन जोड़ों की संख्या लौटाता है जिनका योग 'sum' के बराबर है
int countpairs(int ar[], int n) {
// मैप m में सभी तत्वों की गिनती संग्रहीत करें
// जोड़ी (ar[i], sum-ar[i]) खोजने के लिए
// क्योंकि (ar[i]) + (sum - ar[i]) = sum
map<int, int> mymap;
for (int i = 0; i < n; i++) {
mymap[ar[i]]++;
}
// डुप्लिकेट आइटम हटाने के लिए हम परिणाम मैप का उपयोग करते हैं
map<pair<int, int>, int> p;
int result = 0;
// सभी जोड़ों पर विचार करते हुए
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
// यदि वर्तमान जोड़ी का योग मौजूद है
if (mymap[ar[i] + ar[j]] > 0 && p[{ ar[i], ar[j] }] == 0) {
result++;
}
// डुप्लिकेट से बचने के लिए वर्तमान जोड़ी को दोनों तरीकों से डालें।
p[{ ar[i], ar[j] }]++;
p[{ ar[j], ar[i] }]++;
}
}
return result;
}
// मुख्य फंक्शन
int main() {
int ar[] = {6, 4, 10, 14};
int n = sizeof(ar) / sizeof(ar[0]);
cout << "count is " << countpairs(ar, n);
return 0;
}
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्नलिखित आउटपुट मिलेगा -
count is 2