完全な括弧文字列定義ルールは、1、空の文字列が完全です.2、sが完全な文字列であれば、(s)も完全である.3、sとtが完全な文字列である場合、それらを接続して形成されたstも完全である.
1454 ワード
完全な括弧文字列定義規則は次のとおりです.
1、空の文字列は完全です.
2、sが完全な文字列であれば、(s)も完全である.
3、sとtが完全な文字列である場合、それらを接続して形成されたstも完全である.
たとえば、「(()()())」、「(()()()」は完全なかっこ文字列であり、「()(」)、「(()(」()および「)」)は不完全なカッコ文字列である.
牛にはカッコ文字列sがあり、任意の位置にカッコをできるだけ少なく追加し、完全なカッコ文字列に変換する必要があります.すみません、牛は少なくとも何個の括弧を追加する必要がありますか?
上はちょっと難しい問題です.似たような問題は簡単です.
必要なのは、「()()())」、「(()()」は完全なカッコ文字列であり、不正な文字列やカッコが一致しないという問題はありません.
もしそうなら、コードは小さな変更だけでいいです.
1、空の文字列は完全です.
2、sが完全な文字列であれば、(s)も完全である.
3、sとtが完全な文字列である場合、それらを接続して形成されたstも完全である.
たとえば、「(()()())」、「(()()()」は完全なかっこ文字列であり、「()(」)、「(()(」()および「)」)は不完全なカッコ文字列である.
牛にはカッコ文字列sがあり、任意の位置にカッコをできるだけ少なく追加し、完全なカッコ文字列に変換する必要があります.すみません、牛は少なくとも何個の括弧を追加する必要がありますか?
#include
#include
#include
using namespace std;
int main()
{
int max_deep = 0;
stack count_left , count_right ;
char s;
while((s = getchar()) != '
'){
if(s == '('){
count_left.push('(');
}else{
if(count_left.empty()){
count_right.push(')');
}
else{
count_left.pop();
}
}
}
cout << count_left.size() + count_right.size() << endl;
return 0;
}
上はちょっと難しい問題です.似たような問題は簡単です.
必要なのは、「()()())」、「(()()」は完全なカッコ文字列であり、不正な文字列やカッコが一致しないという問題はありません.
もしそうなら、コードは小さな変更だけでいいです.
#include
#include
using namespace std;
int main()
{
int max_deep = 0;
int count_sign = 0;
char s;
while ((s = getchar()) != '
'){
if (s == '('){
count_sign++;
if (max_deep < count_sign){
max_deep = count_sign;
}
}
else{
count_sign--;
}
}
cout << max_deep << endl;
return 0;
}