हमें किसी भी संबंधित आकार के पूर्णांक मानों की एक सरणी दी गई है, मान लें, arr[] और कार्य किसी दिए गए सरणी में उपलब्ध अलग-अलग जोड़े की संख्या की गणना करना है, जिसका योग भी उसी सरणी में मौजूद है।पी>
एक प्रकार की डेटा संरचना को व्यवस्थित करता है जो एक ही प्रकार के तत्वों के एक निश्चित आकार के अनुक्रमिक संग्रह को संग्रहीत कर सकता है। डेटा के संग्रह को संग्रहीत करने के लिए एक सरणी का उपयोग किया जाता है, लेकिन एक सरणी को उसी प्रकार के चर के संग्रह के रूप में सोचना अक्सर अधिक उपयोगी होता है।
याद रखने योग्य बातें
-
एक जोड़ी को एक ही बार में समान तत्वों के साथ गिना जाएगा, भले ही उनका क्रम कुछ भी हो। उदाहरण के लिए, (3,2) और (2,3) की गणना 1 के रूप में की जाएगी।
-
यदि किसी सरणी में कोई संख्या कई बार आती है तो इसे एक जोड़ी बनाने के लिए ठीक दो बार माना जाएगा। उदाहरण के लिए, यदि किसी सरणी में तत्व {2, 2, 2, 2} हैं तो युग्म (2,2) होगा और इसे 1 के रूप में गिना जाएगा।
उदाहरण के लिए
Input − int arr = {6, 4, 10, 14} Output − count is 2
स्पष्टीकरण - एक सरणी में योग के साथ जोड़े (6,4) और (10,4) हैं इसलिए गिनती 2 है
Input − int arr = {6, 6, 6 ,6, 6, 13} Output − count is 0
स्पष्टीकरण - एक सरणी में एक ही सरणी में योग के साथ कोई जोड़ी नहीं है। तो, गिनती 0 है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
एक सरणी बनाएं मान लें, arr[]
-
लंबाई () फ़ंक्शन का उपयोग करके एक सरणी की लंबाई की गणना करें जो एक सरणी में तत्वों के अनुसार एक पूर्णांक मान लौटाएगा।
-
एक अस्थायी चर लें जो तत्वों की संख्या को संग्रहीत करेगा।
-
एक नक्शा प्रकार चर बनाएं मान लें कि mp
-
i से 0 के लिए प्रारंभ लूप और मैं किसी सरणी के आकार से कम
-
युग्म प्रकार चर का एक और नक्शा बनाएं मान लें कि par
-
i से 0 के लिए प्रारंभ लूप और मैं किसी सरणी के आकार से कम
-
लूप के अंदर, एक और लूप शुरू करें जिसमें j से i+1 और j किसी ऐरे के आकार से कम हो
-
लूप के अंदर, जांचें कि क्या mp[arr[i]+arr[j]]> 0 और pr[{arr[i], arr[j] }] =0 फिर गिनती को 1 से बढ़ा दें
-
वेतन वृद्धि[{ arr[i], arr[j] }] 1 तक
-
वेतन वृद्धि[{ arr[j], arr[i] }] 1 तक
-
गिनती वापस करें
-
परिणाम प्रिंट करें।
उदाहरण
#include <iostream> #include <map> using namespace std; // Returns number of pairs in ar[0..n-1] with // sum equal to 'sum' int countpairs(int ar[], int n){ // Store counts of all elements in map m // to find pair (ar[i], sum-ar[i]) // because (ar[i]) + (sum - ar[i]) = sum map<int, int> mymap; for (int i = 0; i < n; i++){ mymap[ar[i]]++; } // To remove duplicate items we use result map map<pair<int, int>, int> p; int result = 0; // Considering all pairs for (int i = 0; i < n; i++){ for (int j = i + 1; j < n; j++){ // If sum of current pair exists if (mymap[ar[i] + ar[j]] > 0 && p[{ ar[i], ar[j] }] ==0){ result++; } // Inserting the current pair both ways to avoid // duplicates. p[{ ar[i], ar[j] }]++; p[{ ar[j], ar[i] }]++; } } return result; } // main function 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