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

C++ में दिए गए सरणी में मौजूद योग वाले विशिष्ट जोड़ों की संख्या गिनें


हमें एक सरणी दी गई है, मान लीजिए 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

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

    नोड्स के वजन वाली एक बाइनरी ट्री दी गई है। लक्ष्य उन नोड्स की संख्या ढूंढना है जिनके वजन ऐसे हैं कि संख्या एक फाइबोनैचि संख्या है। फाइबोनैचि श्रृंखला में संख्याएं हैं: 0, 1, 1, 2, 3, 5, 8, 13... nth संख्या (n-1)th और (n-2)th का योग है। यदि वजन 13 है तो यह एक फाइबोनैचि संख्या है इसलिए नोड गिना जाएगा।

  1. - C++ में दिए गए नंबर K से विभाज्य ऐरे के सभी एलिमेंट्स का गुणनफल

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

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

    हमें किसी भी आकार की एक सरणी दी गई है जिसमें पूर्णांक तत्व हैं और कार्य सरणी में जोड़ों की संख्या की गणना करना है जैसे कि एक जोड़ी का एक तत्व जोड़ी के दूसरे तत्व को विभाजित करता है। उदाहरण के लिए इनपुट - int arr[] = {1, 2, 3, 6} आउटपुट - गिनती 4 है व्याख्या - (1,2), (1,3), (1,6) और (3,6) वे जोड़े