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

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


हमें दो सरणियाँ दी गई हैं, मान लीजिए arr_1[] और arr_2[] जिनमें पूर्णांक मान हैं और कार्य समान अंक योग वाले विशिष्ट जोड़ों की संख्या की गणना करना है। इसका मतलब है, एक मान arr_1[] से चुना जाना चाहिए और दूसरा मान arr_2[] से एक जोड़ी बनाने के लिए और दोनों मानों का अंक योग समान होना चाहिए।

उदाहरण के लिए

इनपुट - int arr_1[] = {1, 22, 42, 17}    Int arr_2[] = {1, 31, 6, 8} आउटपुट - गिनती 4 है

व्याख्या - कुल मिलाकर 4 जोड़े हैं जिनका अंक योग समान है और वे हैं (1, 1), (22, 31), (42, 6) और (17, 8)।

इनपुट - int arr_1[] = {1, 22, 42, 17}    Int arr_2[] = {2, 78, 6, 18} आउटपुट - गिनती 1 है

व्याख्या - कुल मिलाकर केवल एक जोड़ा है जिसका अंक योग समान है और वह है (42, 6)।

इनपुट - int arr_1[] = {1, 22, 42, 17}    Int arr_2[] = {2, 78, 16, 18} आउटपुट - गिनती 0 है

व्याख्या - कोई जोड़ा नहीं है जिसका अंक योग समान हो इसलिए गिनती 0 है।

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण -

  • दो सरणियाँ बनाएं, मान लीजिए arr_1[] और arr_2[]

  • length() फंक्शन का उपयोग करके दोनों सरणियों की लंबाई की गणना करें जो सरणी में तत्वों के अनुसार एक पूर्णांक मान लौटाएगा।

  • एक सेट टाइप चर बनाएं, मान लीजिए st

  • i को 0 से शुरू करके और i के arr_1[] के आकार से कम होने तक लूप शुरू करें

  • लूप के अंदर, j को 0 से शुरू करके और j के arr_2[] के आकार से कम होने तक एक और लूप शुरू करें।

  • जांचें कि क्या Sum(arr[i]) = sum(arr_2[j]) है तो जांचें कि क्या arr_1[i] arr_2[j] से कम है तो insert(make_pair(arr_1[i], arr_2[j]))

  • अन्यथा, insert(make_pair(arr_2[j], arr_1[i]))।

  • st.size() लौटाएं

  • परिणाम प्रिंट करें।

उदाहरण

#include <iostream>
#include <set>
using namespace std;

// संख्या के अंकों का योग ज्ञात करने के लिए फंक्शन
int sumdigits(int n) {
    int sum = 0;
    while (n > 0) {
        sum += n % 10;
        n = n / 10;
    }
    return sum;
}

// जोड़ों की संख्या गिनने के लिए फंक्शन
int paircount(int arr_1[], int arr_2[], int size1, int size2) {
    // डुप्लिकेट जोड़ों से बचने के लिए सेट का उपयोग किया जाता है
    set<pair<int, int> > myset;
    for (int i = 0; i < size1; i++) {
        for (int j = 0; j < size2; j++) {
            // दोनों तत्वों के अंकों के योग की जांच करें
            if (sumdigits(arr_1[i]) == sumdigits(arr_2[j])) {
                if (arr_1[i] < arr_2[j]) {
                    myset.insert(make_pair(arr_1[i], arr_2[j]));
                } else {
                    myset.insert(make_pair(arr_2[j], arr_1[i]));
                }
            }
        }
    }
    // सेट का आकार लौटाएं
    return myset.size();
}

// ड्राइवर कोड
int main() {
    int arr_1[] = {1, 22, 42, 17};
    int arr_2[] = {5, 31, 6, 8};
    int size1 = sizeof(arr_1) / sizeof(arr_1[0]);
    int size2 = sizeof(arr_2) / sizeof(arr_2[0]);
    cout << "count is " << paircount(arr_1, arr_2, size1, size2);
    return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्नलिखित आउटपुट मिलेगा &miuns;

count is 3

  1. - C++ में योग k से विभाज्य वाले सब-मैट्रिक्स की गिनती

    इनपुट के रूप में एक row x col मैट्रिक्स दिया गया है। लक्ष्य मैट्रिक्स[row][col] के भीतर उन सभी सबमैट्रिक्स को ढूंढना है जिनके तत्वों का योग पूर्णांक k से विभाज्य है। यदि मैट्रिक्स mat[3][3] है और k 4 है तो सबमैट्रिक्स नीचे दिखाए अनुसार होंगे:-  उदाहरणों से समझते हैं। उदाहरण के लिए इनपुट - matri

  1. - C++ प्रोग्राम में क्रमानुसार दो सरणियों से तत्व चुनकर अधिकतम योग

    इस समस्या में, हमें दो सरणियाँ arr1[] और arr2[], और दो संख्याएँ N और M दी गई हैं। N, arr1 से लिए गए तत्वों की संख्या देता है। M, arr2 से लिए गए तत्वों की संख्या देता है। हमें arr1[i] से arr2[i] में से एक तत्व चुनना है, जिसके लिए योग अधिकतम हो, लेकिन अधिकतम N arr1 से और M arr2 से लिए जा सकते हैं।

  1. दो BSTs से योग x वाले नोड जोड़ों की गणना - C++ दो BSTs से योग x वाले नोड जोड़ों की गणना - C++

    समस्या विवरण हमें दो बाइनरी सर्च ट्री (BST) और एक मान x दिया गया है। लक्ष्य उन नोड जोड़ों की गणना करना है जहाँ एक नोड पहले BST से और दूसरा दूसरे BST से हो, और उनके डेटा का योग x के बराबर हो। उदाहरण आउटपुट: 1 (जोड़ी: 8+6=14) आउटपुट: 2 (जोड़ियाँ: 5+15=20, 4+16=20) दृष्टिकोण पहले BST को इनऑर्डर (छोटे