UVa 673 Parentheses Balance -SilverN
2016-04-26 19:10
267 查看
You are given a string consisting of parentheses () and []. A string of this type is said to be correct:
(a)if it is the empty string(b)if A and B are correct, AB is correct,(c)if A is correct, (A) and [A] is correct.
Write a program that takes a sequence of strings of this type and check their correctness. Your program can assume that the maximum string length is 128.
(a)if it is the empty string(b)if A and B are correct, AB is correct,(c)if A is correct, (A) and [A] is correct.
Write a program that takes a sequence of strings of this type and check their correctness. Your program can assume that the maximum string length is 128.
Input
The file contains a positive integer n and a sequence of n strings of parentheses () and [], one string a line.Output
A sequence of Yes or No on the output file.Sample Input
3 ([]) (([()]))) ([()[]()])()
Sample Output
Yes No Yes 用栈模拟匹配括号
/*UVa 673 Parentheses Balance*/ #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<stack> using namespace std; char c[500]; int n; int pd(char q,char e){//匹配 if(q=='(' && e==')')return 1; if(q=='[' && e==']')return 1; return 0; } int main(){ scanf("%d\n",&n); while(n--){ gets(c);//因为可能读入空串,所以用gets if(strcmp(c,"\n")==0){//空串合法 printf("Yes"); continue; } int flag=0; stack<char>st; int L=strlen(c); for(int i=0;i<L;i++){ if(c[i]=='(' || c[i]=='[') st.push(c[i]);//左括号入栈 else{//右括号处理 if(st.empty()){ flag=1; break; } if(pd(st.top(),c[i])==1) st.pop(); else{ flag=1; break; } } } if(flag==1 || !st.empty())printf("No\n"); else printf("Yes\n"); } return 0; }
相关文章推荐
- NSDate相差8小时
- 和尚挑水问题
- Oracle的数据类型float(b)
- 【概念】SVG(2)
- 15个学习习惯,收益一生(蓝心网)
- C#界面设计之利用TreeView来制作新闻列表
- 红外协议之NEC协议
- c++作业4
- 监听网络状态
- 架构基础
- 【GDOI2016模拟4.23】飞机调度
- I2C总线协议
- MySQL Binlog Mixed模式记录成Row格式
- JAVA发送邮件最全示例
- 文章标题
- 数组的初始化问题
- springmvc restful put delete Ajax 请求参数取不到-已解决
- java编程中'为了性能'一些尽量做到的地方
- [省选] [线段树] [BZOJ1012] JSOI2008 最大值 (max)
- 移动端 顶部、底部和内容之间的小技巧 用flex布局来解决