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

C++ में विषम योग वाले सबएरे की संख्या


सबएरे एक सरणी का सन्निकट भाग होता है। उदाहरण के लिए, हम एक सरणी [5, 6, 7, 8] पर विचार करते हैं, तो दस गैर-खाली सबएरे हैं जैसे (5), (6), (7), (8), (5, 6), (6,7), (7,8), (5,6,7), (6,7,8) और (5,6,7,8)।

इस गाइड में, हम C++ में विषम योग वाले सबएरे की संख्या निकालने के लिए हर संभव जानकारी समझाएंगे। विषम योग वाले सबएरे की संख्या निकालने के लिए, हम विभिन्न दृष्टिकोणों का उपयोग कर सकते हैं, तो यहां इसका एक सरल उदाहरण है -

इनपुट: array = {9,8,7,6,5} आउटपुट: 9 व्याख्या: सबएरे का योग - {9} = 9 {7} = 7 {5} = 5 {9,8} = 17 {8,7} = 15 {7,6} = 13 {6,5} = 11 {8,7,6} = 21 {9,8,7,6,5} = 35

ब्रूट फोर्स दृष्टिकोण

इस दृष्टिकोण से हम बस जांच सकते हैं कि सभी सबएरे में तत्वों का योग सम है या विषम, यदि यह सम है तो हम उस सबएरे को अस्वीकार कर देंगे और विषम योग वाले सबएरे को गिनेंगे, यह एक कुशल दृष्टिकोण नहीं है क्योंकि इस कोड की जटिलता O(n²) है।

उदाहरण

 #include <bits/stdc++.h> using namespace std; int main(){     int n=5, temp = 0;     int a[n-1] = { 9,8,7,6,5 } ; // हमारी सरणी घोषित करना।     int cnt = 0; // काउंटर वेरिएबल।     for(int i = 0; i < n; i++){         temp = 0; // हमारे अस्थायी योग को रीफ्रेश करना।         for(int j = i; j < n; j++){ // यह लूप i से n-1 तक शुरू होने वाले हमारे सबएरे बनाएगा।             temp = temp + a[j];             if( temp % 2 == 1 )                 cnt++;         }     }     cout << "Number of subarrays with odd sum : " << cnt << "\n";     return 0; }

आउटपुट

Number of subarrays with odd sum : 9

उपरोक्त कोड की व्याख्या

इस कोड में नेस्टेड लूप का उपयोग किया गया है जहां बाहरी लूप I के मान को बढ़ाने के लिए उपयोग किया जाता है, जो सरणी के प्रत्येक मान को शुरुआत से इंगित करता है; आंतरिक लूप का उपयोग " i " स्थिति से शुरू होने वाले विषम योग वाले सबएरे को खोजने के लिए किया जाता है।

कुशल दृष्टिकोण

इस दृष्टिकोण में, हम सरणी में 0th स्थिति से प्रत्येक तत्व को प्रोसेस कर रहे हैं। यदि वर्तमान तत्व विषम है, तो एक विषम काउंटर बढ़ाएं और प्रत्येक सम संख्या के लिए एक सम काउंटर बढ़ाएं। यदि हमें एक विषम संख्या मिलती है, तो सम और विषम के मानों को स्वैप करें क्योंकि सबएरे में एक विषम संख्या जोड़ने से इसकी समता बदल जाएगी और अंत में परिणाम में काउंट जोड़ें। इस कोड की जटिलता O(n) है, क्योंकि हम प्रत्येक तत्व को प्रोसेस कर रहे हैं।

उदाहरण

   #include <bits/stdc++.h> using namespace std; int main(){     int odd = 0, even = 0,  result = 0,n=5,i,temp;     int arr[ n-1 ] = { 9,8,7,6,5}; // सरणी को इनिशियलाइज़ करना      // सरणी के प्रत्येक तत्व को प्रोसेस करने के लिए फॉर लूप     for ( i = 0 ; i < n ; i ++ )  {         if ( arr[ i ] % 2 == 0 ) {             even++;         } else {           // सम विषम मान स्वैप करना             temp = even;             even = odd;             odd = temp + 1;         }         result += odd;     }     cout << "Number of subarrays with odd sum : " << result; }

आउटपुट

Number of subarrays with odd sum : 9

उपरोक्त कोड की व्याख्या

इस कोड में, हम प्रत्येक तत्व को सम/विषम के लिए चेक करते हैं और सम संख्या के लिए सम काउंटर बढ़ाते हैं और विषम संख्या के लिए विषम काउंटर। साथ ही, यदि विषम संख्या मिलती है तो हम विषम-सम काउंटर मानों को स्वैप कर रहे हैं; अन्यथा, यह सबएरे की समता बदल देगा। फिर प्रत्येक पुनरावृति के बाद विषम काउंटर का मान परिणाम वेरिएबल में जोड़ रहे हैं।

निष्कर्ष

इस लेख में, हमने ब्रूट फोर्स दृष्टिकोण से विषम योग वाले सबएरे की संख्या निकालने का तरीका समझाया, जो विषम योग वाले हर सबएरे को जनरेट करता है और काउंट बढ़ाता है। इस कोड की समय जटिलता O(n²) है। एक कुशल दृष्टिकोण सरणी के प्रत्येक तत्व को पार करके और प्रत्येक विषम/सम संख्या मिलने पर विषम/सम काउंटर वेरिएबल को बढ़ाकर और विषम संख्या मिलने पर काउंटर को स्वैप करके है; इस कोड की समय जटिलता O(n) है। आशा है आपको यह लेख समस्या और समाधान को समझने में उपयोगी लगा होगा।

  1. C++ का उपयोग करके पेंटागोनल पिरामिडल संख्या ज्ञात करना C++ का उपयोग करके पेंटागोनल पिरामिडल संख्या ज्ञात करना

    एक पेंटागोनल पिरामिडल संख्या पेंटागोनल बेस पिरामिड में वस्तुओं की संख्या के बराबर होती है। नीचे कुछ पेंटागोनल संख्याएं देखें। N तक पेंटागोनल संख्याओं का योग Nवीं पेंटागोनल पिरामिडल संख्या के बराबर होता है। इस लेख में, हम Nवीं पेंटागोनल पिरामिडल संख्या खोजने पर चर्चा करेंगे, उदाहरण के लिए: इनपुट:

  1. C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना

    इस लेख में, आप एक दी गई स्ट्रिंग में बनने वाले सबस्ट्रिंग्स (गैर-खाली) की संख्या निकालने के दृष्टिकोण के बारे में जानेंगे।इनपुट: string = moon आउटपुट: 10 व्याख्या: सबस्ट्रिंग्स हैं m, o, o, n, mo, oo, on, moo, oon और moon। इनपुट: string = yellow आउटपुट: 21समाधान खोजने का दृष्टिकोणमान लें स्ट्रिंग की

  1. C++ का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात करें C++ का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात करें

    बिंदु X और Y के बीच n संख्या में इंटरमीडिएट ट्रेन स्टेशन हैं। उन विभिन्न तरीकों की गणना करें जिनसे ट्रेनों को s स्टेशनों पर रुकने के लिए व्यवस्थित किया जा सकता है जैसे कि कोई दो स्टेशन एक-दूसरे के बगल में न हों। तो इस लेख में, हम स्टॉपिंग स्टेशनों की संख्या ज्ञात करने के लिए हर संभव दृष्टिकोण की व्य