C++で有効な括弧
タスクは簡単です。これを行うためにスタックを使用します。解決策を得るには、次の手順に従う必要があります-
-
使い果たされるまで式をトラバースします
-
現在の文字が(、{または[のように角かっこを開いている場合は、スタックにプッシュします
-
現在の文字が)、}、]のように閉じ括弧である場合は、スタックからポップし、ポップされたブラケットが現在の文字の対応する開始ブラケットであるかどうかを確認します。そうでない場合は、バランスが取れていません。
-
-
ストリングが使い果たされた後、スタックに開始ブラケットが残っている場合、ストリングはバランスが取れていません。
例
#include <iostream>
#include <stack>
using namespace std;
bool isBalancedExp(string exp) {
stack<char> stk;
char x;
for (int i=0; i<exp.length(); i++) {
if (exp[i]=='('||exp[i]=='['||exp[i]=='{') {
stk.push(exp[i]);
continue;
}
if (stk.empty())
return false;
switch (exp[i]) {
case ')':
x = stk.top();
stk.pop();
if (x=='{' || x=='[')
return false;
break;
case '}':
x = stk.top();
stk.pop();
if (x=='(' || x=='[')
return false;
break;
case ']':
x = stk.top();
stk.pop();
if (x =='(' || x == '{')
return false;
break;
}
}
return (stk.empty());
}
int main() {
string expresion = "()[(){()}]";
if (isBalancedExp(expresion))
cout << "This is Balanced Expression";
else
cout << "This is Not Balanced Expression";
} 入力
"()[(){()}]" 出力
This is Balanced Expression
-
C++式から無効な括弧を削除する
括弧のシーケンスが与えられます。ここで、たとえば、無効な括弧を削除することによって作成できるすべての可能な括弧を印刷する必要があります Input : str = “()())()” - Output : ()()() (())() There are two possible solutions "()()()" and "(())()" Input : str = (v)())() Output : (v)()() (v())() この問題では、すべての有効なシーケンスを出力するようにバックトラッキングを使用します。 解決
-
C++で有効な数独
数独と呼ばれる9×9のマトリックスを与えたとしましょう。タスクは、指定された数独パターンが有効かどうかを確認することです。 一般的に、数独ボードは次のようになります 数独のルール − すべての行には、1〜9の範囲の数値が含まれています すべての列には、1〜9の範囲の数字が含まれています。 3×3の各ブロックには一意の番号が含まれています。 特定の行に同じ番号を付けることはできません。 特定の列に同じ番号を付けることはできません。 例 入力-1 − sudoku[]= [["3","5&q