Codeforces 612C Replace To Make Regular Bracket Sequence 【stack】
来源:互联网 发布:编程器刷主板bios 编辑:程序博客网 时间:2024/05/16 18:52
You are given string s consists of opening and closing brackets of four kinds <>, {}, [], (). There are two types of brackets: opening and closing. You can replace any bracket by another of the same type. For example, you can replace < by the bracket {, but you can't replace it by ) or >.
The following definition of a regular bracket sequence is well-known, so you can be familiar with it.
Let's define a regular bracket sequence (RBS). Empty string is RBS. Let s1 and s2 be a RBS then the strings <s1>s2, {s1}s2, [s1]s2,(s1)s2 are also RBS.
For example the string "[[(){}]<>]" is RBS, but the strings "[)()" and "][()()" are not.
Determine the least number of replaces to make the string s RBS.
The only line contains a non empty string s, consisting of only opening and closing brackets of four kinds. The length of s does not exceed 106.
If it's impossible to get RBS from s print Impossible.
Otherwise print the least number of replaces needed to get RBS from s.
[<}){}
2
{()}[]
0
]]
Impossible
#include<string.h>
#include<stack>
using namespace std;
int judge(char a,char b)
{
if(a=='<'&&b=='>')
return 1;
else if(a=='('&&b==')')
return 1;
else if(a=='{'&&b=='}')
return 1;
else if(a=='['&&b==']')
return 1;
return 0;
}
char st[1000010];
int main()
{
int sum,l,i;
while(~scanf("%s",st))
{
sum=0;
stack<char>a;
l=strlen(st);
if(st[0]=='>'||st[0]=='}'||st[0]==')'||st[0]==']')
printf("Impossible\n");
else
{
a.push(st[0]);
for(i=1;i<l;i++)
{
if(st[i]=='>'||st[i]=='}'||st[i]==')'||st[i]==']')
{ if(!a.empty())
{
if(judge(a.top(),st[i]))
a.pop();
else
{
sum++;
a.pop();
}
}
else
{
a.push(st[i]);
break;
}
}
else
a.push(st[i]);
}
if(a.empty())
printf("%d\n",sum);
else
printf("Impossible\n");
}
}
return 0;
}
- Codeforces 612C Replace To Make Regular Bracket Sequence 【stack】
- Codeforces 612C Replace To Make Regular Bracket Sequence 【stack】
- Codeforces-612C-Replace To Make Regular Bracket Sequence 【stack】
- Codeforces 612C Replace To Make Regular Bracket Sequence 【stack】
- Codeforces 612C Replace To Make Regular Bracket Sequence 【stack】
- 【CodeForces】[612C]Replace To Make Regular Bracket Sequence
- CodeForces 612C Replace To Make Regular Bracket Sequence
- Codeforces 612C Replace To Make Regular Bracket Sequence
- Codeforces 612C Replace To Make Regular Bracket Sequence【栈】
- CodeForces 612C Replace To Make Regular Bracket Sequence
- codeforces 612C Replace To Make Regular Bracket Sequence
- Codeforces 612C Replace To Make Regular Bracket Sequence stack栈 的应用
- C. Replace To Make Regular Bracket Sequence
- Educational Codeforces Round 4 612C Replace To Make Regular Bracket Sequence(脑洞)
- CodeForces 612 C. Replace To Make Regular Bracket Sequence(栈)
- 【CodeForces】612C - Replace To Make Regular Bracket Sequence(栈,括号配对问题)
- 【Codeforces】-612C-Replace To Make Regular Bracket Sequence(括号配对,栈)
- CodeForces 612C Replace To Make Regular Bracket Sequence (栈)
- form表单的提交方式:submit和button.
- 如何编写Socket套接字
- jmeter压力测试的简单实例+badboy脚本录制
- 【ES6】变量的解构赋值
- hd1896 Stones(队列优先)
- Codeforces 612C Replace To Make Regular Bracket Sequence 【stack】
- 补充面试题(一)
- 首次运行 IntelliJ IDEA旗舰版
- VS2005 SP1 for vista 安装小记----本人备注
- LeetCode-216:Combination Sum III
- C++ 程序设计_谭浩强
- RunLoop NSMachPort 详解
- javascript权威指南--关系表达式
- bzoj 3631(树链剖分)