codevs 2058 括号序列
来源:互联网 发布:阿里云os root工具 编辑:程序博客网 时间:2024/04/28 05:28
题目描述 Description
定义满足以下规则字符串为规则序列,否则不是规则序列:
1.空序列是规则序列;
2.如果S是规则序列,那么(S),[S],{S}和<S>也是规则序列;
3.如果A和B都是规则序列,那么AB也是规则序列。
例如,下面的字符串都是规则序列:
(),[],(()),([]),()[],()[()],{{}}<>,([]<>{{}}),<<{}>>
而以下几个则不是:
(,[,],)(,()),([(),<<,{(}),<{}>)
现在,给你一些由"("、")"、"["、"]"、"{"、"}"、"<"、">"构成的字符串,请判断该字符串是否为规则序列。
输入描述 Input Description
第一行:一个正整数N,表示测试数据组数;
接下来N行:每行一个括号序列(长度不超过L)。
输出描述 Output Description
共N行:对于每一个括号序列,判断其是否规则。
规则输出TRUE,否则输出FALSE。
样例输入 Sample Input
2
{()}<<>>
{{{{{}}}}
样例输出 Sample Output
TRUE
FALSE
数据范围及提示 Data Size & Hint
对于40%数据,有N=1,0<L<=20;
对于80%数据,有0<N<=5,0<L<=10^3;
对于100%数据,有0<N<=10,0<L<=2*10^6。
栈的简单应用,注意去栈顶元素时,需先判断栈是否为空。
/*作者:1094618304@qq.com题目:p2058 括号序列*/#include<cstdio>#include<cstring>#include<stack>using namespace std;char a[2000005];int main(){ int n,i,l,flag; stack<char>s; scanf("%d",&n); getchar(); while(n--) { flag=0; while(!s.empty()) s.pop(); scanf("%s",a); l=strlen(a); for(i=0;i<l;i++) { if(a[i]=='('||a[i]=='['||a[i]=='<'||a[i]=='{') s.push(a[i]); else if(!s.empty()&&(a[i]==')'&&s.top()=='('||a[i]==']'&&s.top()=='['||a[i]=='>'&&s.top()=='<'||a[i]=='}'&&s.top()=='{')) s.pop(); else {flag=1;break;} } if(!flag&&s.empty()) printf("TRUE\n"); else printf("FALSE\n"); } return 0;}
0 0
- codevs 2058 括号序列
- Codevs 2058 括号序列(简单栈)
- 2058 括号序列
- COdevs 1251 括号
- 括号序列
- 括号序列
- 括号序列
- 括号序列
- 括号序列
- 括号序列
- 括号序列
- 括号序列
- Codevs 1251 括号 解题报告
- 括号匹配(小中大括号序列)
- 括号序列问题
- [jsoi2011]括号序列
- poj1141 括号序列 dp
- 判断括号序列是否合法
- 作业题
- POJ-2488-A Knight's Journey
- JAVA annotation入门
- 道
- 二分搜索的总结(续)
- codevs 2058 括号序列
- select...into的用法
- 自己总结的小米2S线刷开发版
- Ubuntu 12.04中文输入法的安装
- myeclipse8.6 for sprin…
- WP下数据绑定的数据模板,目标属性…
- JSP留言板程序-开发过程
- 在MYSQL 自增,默认值,时间默…
- Method对象