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

C++ में ब्रैकेट नंबर प्रिंट करें


इस समस्या में, हमें एक अभिव्यक्ति दी गई है। और हमें ब्रैकेट नंबर अनुक्रम प्रिंट करना है। आइए एक उदाहरण देखकर इस समस्या को बेहतर ढंग से समझते हैं।

उदाहरण,

Input : ((()())()) Output : 1233442551

व्याख्या - यहां हमें 5 ब्रैकेट जोड़े मिले हैं और हमने उन्हें उनकी घटना के क्रम में अनुक्रम में प्रिंट किया है।

अब चूंकि हम समस्या के बारे में जानते हैं, आइए इस समाधान का समाधान बनाते हैं।

इस समस्या का समाधान स्टैक डेटा संरचना की आवश्यकता है। हम एक वेरिएबल का उपयोग करेंगे जो बाएं ब्रैकेट की संख्या की गिनती रखता है और स्टैक दाएं ब्रैकेट का ट्रैक रखता है। हम बाएं ब्रैकेट की गिनती करेंगे और उन्हें स्टैक में डालेंगे और जब दायां ब्रैकेट मिले तो पॉप करेंगे।

एल्गोरिदम

चरण 1 : leftBrackets = 1 आरंभ करें। स्टैक rightBrackets, खाली। चरण 2 : i = 0 से n-1 तक वेरिएबल i का उपयोग करके अभिव्यक्ति को ट्रैवर्स करें। चरण 3 : यदि expression[i] == '(' यानी बायां ब्रैकेट मिला। तब,     चरण 3.1 : 'leftBracket ' प्रिंट करें।     चरण 3.2 : leftBracket का मान स्टैक में डालें।     चरण 3.3 : leftBracket++। चरण 4 : यदि expression[i] == ')' यानी दायां ब्रैकेट मिला। तब,     चरण 4.1 : स्टैक के शीर्ष को प्रिंट करें।     चरण 4.2 : स्टैक के शीर्ष तत्व को पॉप करें। चरण 5 : बाहर निकलें।

उदाहरण

अब उपरोक्त एल्गोरिदम के कार्यान्वयन को दर्शाने वाला प्रोग्राम बनाते हैं।

#include <bits/stdc++.h> using namespace std; void bracketCount(string expression, int n){     int leftBracket = 1;     stack<int> rightBracket;     for (int i = 0; i < n; i++) {         if (expression[i] == '(') {             cout<<leftBracket<<" ";             rightBracket.push(leftBracket);             leftBracket++;         }         else if(expression[i] == ')') {             cout<<rightBracket.top() << " ";             rightBracket.pop();         }     } } int main(){     string expression = "()((())()())";     int n = expression.size();     bracketCount(expression, n);     return 0; }

आउटपुट

1 1 2 3 4 4 3 5 5 6 6 2

  1. - C++ में मितव्ययी संख्या (Frugal Number)

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया गया है। हमारा कार्य यह जांचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या (FRUGAL NUMBER) − एक संख्या जिसके अंकों की संख्या उस संख्या के अभाज्य गुणनखंडन में अंकों की संख्या से सख्ती से अधिक है। उदाहरण &

  1. C++ में पेंटाटोप संख्या C++ में पेंटाटोप संख्या

    एक पेंटाटोप संख्या को पास्कल के त्रिभुज में पांचवीं संख्या के रूप में वर्णित किया गया है। अब, चूंकि यह पांचवीं संख्या है, इसका मतलब है कि पास्कल के त्रिभुज में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है जो पास्कल के त्रिभुज की चौथी पंक्ति है। तो, इस

  1. C++ STL में स्टैक (3.5) C++ STL में स्टैक (3.5)

    C++ STL में, स्टैक का उपयोग एक कंटेनर के रूप में किया जाता है जिसे LIFO संरचना के रूप में कार्यान्वित किया जाता है। LIFO का अर्थ है लास्ट इन फर्स्ट आउट। स्टैक को किताबों के ढेर के रूप में देखा जा सकता है जिसमें किताबें एक के ऊपर एक व्यवस्थित होती हैं और अंत में डाली गई किताब सबसे पहले हटाई जाएगी इसल