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

पता लगाएं कि सी ++ में 0 योग के साथ कोई सबरे है या नहीं

इस समस्या में, हमें पूर्णांक मानों से युक्त n आकार का एक सरणी arr[] दिया जाता है। हमारा काम यह पता लगाना है कि क्या 0 योग के साथ कोई सबरे है।

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

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

इनपुट: गिरफ्तारी [] ={3, 1, -2, 1, 4, 5}

आउटपुट: हाँ

स्पष्टीकरण:

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

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

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

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

यदि उप-सरणी पाई जाती है तो सत्य return लौटाएं

अन्यथा गलत लौटाएं

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

उदाहरण

#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 तत्व हैं, तो हमारे पास 2n उपसमुच्चय (खाली

  1. C++ में अधिकतम योग सख्ती से बढ़ते हुए सबरे का पता लगाएं

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

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

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