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

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


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

उदाहरण,

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

स्पष्टीकरण - यहां हमें 5 ब्रैकेट जोड़े मिले हैं और हमने उन्हें उनके [घटना' के क्रम में प्रिंट किया है।

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

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

एल्गोरिदम

Step 1 : Initialise leftBrackets = 1. stack rightBrackets, empty.
Step 2 : traverse the expression using variable i = 0 to n-1.
Step 3 : if expression[i] == ‘(’ i.e. left bracket is encountered. Then,
   Step 3.1 : PRINT ‘leftBracket ‘.
   Step 3.2 : push the value of leftBracket in stack.
   Step 3.3 : leftBracket++.
Step 4 : if expression[i] == ‘)’ i.e. right bracket is encountered. Then,
   Step 4.1 : PRINT top of stack.
   Step 4.2 : pop top element of the stack.
Step 5 : EXIT.

उदाहरण

आइए अब उपरोक्त एल्गोरिथम के कार्यान्वयन को स्पष्ट करने के लिए प्रोग्रामिंग बनाएं।

#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++ में मितव्ययी संख्या

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

  1. सी++ पेंटाटोप नंबर

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

  1. सी ++ एसटीएल में ढेर (3.5)

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