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

C++ में जांचें कि क्या शून्य योग वाला उपसरणी मौजूद है


इस समस्या में, हमें पूर्णांक मानों वाली आकार n की एक सरणी arr[] दी गई है। हमारा कार्य जांचना है कि क्या शून्य योग वाला उपसरणी मौजूद है।

हमें जांचना है कि दी गई सरणी में कोई उप-सरणी है जिसमें सभी तत्वों का योग 0 के बराबर है।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट: arr[] = {3, 1, -2, 1, 4, 5}

आउटपुट: Yes

व्याख्या:

उपसरणी {1, -2, 1} का सभी मानों का योग 0 के बराबर है।

समाधान दृष्टिकोण:

समस्या का एक सरल समाधान सभी उपसरणी पर विचार करना और जांचना है कि सभी तत्वों का योग 0 के बराबर है या नहीं।

समस्या का एक और समाधान हैशिंग का उपयोग करना है। हमें सरणी पर लूप करना होगा और फिर वर्तमान सूचकांक तक योग ढूंढना होगा और इसे हैश टेबल में संग्रहीत करना होगा।
फिर हैश टेबल में जांचें, यदि योग मान पहले जैसा ही है तो योग = 0 वाला उपसरणी मिला।

यदि उपसरणी मिला तो True वापस करें

अन्यथा False वापस करें

हमारी समस्या के कार्यप्रणाली को दर्शाने वाला प्रोग्राम,

उदाहरण

#include <bits/stdc++.h>
using namespace std;

bool isSubArraySumZero(int arr[], int n) {
    unordered_set<int> sumHash;
    int currSum = 0;
    for (int i = 0 ; i < n ; i++) {
        currSum += arr[i];
        if (currSum == 0 || sumHash.find(currSum) != sumHash.end())
            return true;
        sumHash.insert(currSum);
    }
    return false;
}

int main() {
    int arr[] = { 3, 1, -2, 1, 4, 5 };
    int n = sizeof(arr)/sizeof(arr[0]);
    if (isSubArraySumZero(arr, n))
        cout<<"SubArray with sum equal to 0 exists in the array";
    else
        cout<<"No subarray exists";
    return 0;
}

आउटपुट

SubArray with sum equal to 0 exists in the array

  1. - C++ में सभी सबसीक्वेंस के योग का योग ढूंढें

    मान लीजिए हमारे पास n एलिमेंट्स वाला एक ऐरे A है। हमें ऐरे के सभी सबसेट के योग का कुल योग ढूंढना है। तो यदि ऐरे A = [5, 6, 8] जैसा है, तो यह होगा - सबसेट योग 5 5 6 6 8 8 5,6 11 6,8 14 5,8 13 5,6,8 19 कुल योग 76 जैसा कि ऐरे में n एलिमेंट्स हैं, तो हमारे पास 2ⁿ संख्या में सबस

  1. - सख्ती से बढ़ते सब-अर्रे का अधिकतम योग खोजें C++ में

    मान लीजिए हमारे पास n पूर्णांकों का एक ऐरे है। सख्ती से बढ़ते सब-अर्रे का अधिकतम योग खोजें। तो यदि ऐरे [1, 2, 3, 2, 5, 1, 7] जैसा है, तो योग 8 होगा। इस ऐरे में तीन सख्ती से बढ़ते सब-अर्रे हैं ये हैं {1, 2, 3}, {2, 5} और {1, 7}। अधिकतम योग वाला सब-अर्रे {1, 7} है। इस समस्या को हल करने के लिए, हमें अध

  1. - C++ का उपयोग करके मैट्रिक्स में अधिकतम योग वाला कॉलम खोजें

    मान लीजिए हमारे पास M x N आकार का एक मैट्रिक्स है। हमें वह कॉलम ढूंढना है जिसका योग अधिकतम है। इस प्रोग्राम में हम किसी ट्रिकी दृष्टिकोण का पालन नहीं करेंगे, बल्कि सरणी को कॉलम-वार पार करेंगे, प्रत्येक कॉलम का योग प्राप्त करेंगे, और यदि योग अधिकतम है, तो उस योग और कॉलम इंडेक्स को प्रिंट करेंगे। उदा