ブラケット番号をC++で印刷する
この問題では、表現が与えられます。そして、括弧番号のシーケンスを印刷する必要があります。問題をよりよく理解するために例を見てみましょう。
例、
Input : ((()())()) Output : 1233442551
説明 −ここでは、5つのブラケットのペアに遭遇し、それらを[出現]の順序で印刷しました。
問題がわかったので、このソリューションのソリューションを作成しましょう。
この問題を解決するには、スタックデータ構造が必要です。左角かっこ数のカウントを保持する1つの変数を使用し、スタックは右角かっこを追跡します。左角かっこを数えてスタックに押し込み、右角かっこが見つかったらポップします。
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
-
C++五胞体数
五胞体数は、パスカルの三角形の5番目の数として表されます。ご存知のように、これは5番目の数字です。つまり、パスカルの三角形に少なくとも5つの数字が必要です。したがって、このシリーズの最初の数字は 1 4 6 4 1から始まります。 パスカルの三角形の4行目。したがって、このチュートリアルでは、たとえば、n番目の五胞体数を見つける必要があります Input : 1 Output : 1 Input : 4 Output : 35 次の図から出力を確認できます- この問題については、可能な限り、これは一種のシリーズであるため、ソリューションでこのシリーズのパターンを見つけようと
-
C ++ STL(3.5)でスタック
C ++ STLでは、スタックはLIFO構造として実装されるコンテナーとして使用されます。 LIFOは後入れ先出しを意味します。 Stackは、本が上下に並べられた本の山と見なすことができ、最後に挿入された本が最初に削除されるため、LIFO構造と呼ばれます。 スタックに関連付けられている操作は- Top() -この関数は、スタックの最上位要素への参照を返します。 構文 --name_of_stack.top() パラメータ -パラメータなし 戻り値 -スタックコンテナの最上位要素への参照 Push() -この関数は、要素をスタックコンテナに挿入するために使用されま