Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

उन अलग-अलग युग्मों की संख्या गिनें जिनका योग C++ में दिए गए सरणी में मौजूद है

हमें किसी भी संबंधित आकार के पूर्णांक मानों की एक सरणी दी गई है, मान लें, 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

  1. उन नोड्स की गणना करें जिनका योग X के साथ C++ में एक फाइबोनैचि संख्या है

    एक बाइनरी ट्री दिया गया है जिसके नोड्स के भार संख्याओं के रूप में हैं। लक्ष्य उन नोड्स की संख्या का पता लगाना है जिनका वजन इस तरह है कि संख्या एक फाइबोनैचि संख्या है। फाइबोनैचि श्रृंखला में संख्याएं हैं:0, 1, 1, 2, 3, 5, 8, 13…। n वीं संख्या का योग है (n−1)वें और (n−2)वें। अगर वजन 13 है तो यह एक फाइ

  1. C++ में दी गई संख्या K से विभाज्य किसी सरणी के सभी तत्वों का गुणनफल

    एक सरणी arr[n] को देखते हुए n पूर्णांकों की संख्या और एक अन्य पूर्णांक k के साथ, कार्य उत्पाद को arr[] के सभी तत्वों को खोजना है जो k से विभाज्य हैं। समस्या को हल करने के लिए हमें सरणी के प्रत्येक तत्व को पुनरावृत्त करना होगा और यह पता लगाना होगा कि क्या यह संख्या k से पूरी तरह से विभाज्य है और फिर

  1. सी ++ में एक सरणी में विभाज्य जोड़े की गणना करें

    हमें पूर्णांक तत्वों वाले किसी भी आकार की एक सरणी दी गई है और कार्य एक सरणी में जोड़े की गणना की गणना करना है जैसे कि एक जोड़ी का एक तत्व एक जोड़ी के दूसरे तत्व को विभाजित करता है। एक प्रकार की डेटा संरचना को व्यवस्थित करता है जो एक ही प्रकार के तत्वों के एक निश्चित आकार के अनुक्रमिक संग्रह को संग्