UVA 673 - Parentheses Balance
2017-10-01 11:03
387 查看
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=614
题目大意:括号的匹配。
分析:利用栈模拟一边,如果是左括号就加入栈,如果是右括号,就检验与栈顶元素是否匹配。需要注意的是:当遇到右括号时要判断栈是否为空,如果栈为空,就直接跳出;还有当遇到只有\0的情况,需要输出Yes,所以不能用scanf,要用gets输入。
ac代码
题目大意:括号的匹配。
分析:利用栈模拟一边,如果是左括号就加入栈,如果是右括号,就检验与栈顶元素是否匹配。需要注意的是:当遇到右括号时要判断栈是否为空,如果栈为空,就直接跳出;还有当遇到只有\0的情况,需要输出Yes,所以不能用scanf,要用gets输入。
ac代码
#include<cstdio> #include<cstring> #include<stack> using namespace std; char str[130]; int main() { int T; scanf("%d", &T); getchar(); for(int t = 1; t <= T; t++) { stack<char> s; int flag = 1; gets(str); if(str[0] == '\0') { printf("Yes\n"); continue; } int len = strlen(str); if(len % 2)flag = 0; else { for(int i = 0; i < len; i++) { if(str[i] == '(' || str[i] == '[')s.push(str[i]); if(str[i] == ')') { if(s.empty()) { flag = 0; break; } if(s.top() == '(')s.pop(); else { flag = 0; break; } } if(str[i] == ']') { if(s.empty()) { flag = 0; break; } if(s.top() == '[')s.pop(); else { flag = 0; break; } } } if(!s.empty())flag = 0; } if(flag)printf("Yes\n"); else printf("No\n"); } return 0; }
相关文章推荐
- 平衡的括号(Parentheses Balance,UVa 673)
- UVa OJ Parentheses Balance 673 括号平衡
- uva 673 - Parentheses Balance
- UVA 673 Parentheses Balance
- UVA 673 Parentheses Balance
- UVa 673 Parentheses Balance(栈)
- uva673-Parentheses Balance
- Parentheses Balance UVA - 673
- UVa 673 Parentheses Balance【栈】
- uva 673 - Parentheses Balance
- Uva 673 Parentheses Balance
- 【STL基础02】UVA-673-Parentheses Balance
- Parentheses Balance-UVA - 673
- Uva 673 Parentheses Balance 平衡的括号
- UVa673_ Parentheses Balance
- UVA - 673 Parentheses Balance
- UVA673 Parentheses Balance
- UVA 673 Parentheses Balance
- UVa 673 - Parentheses Balance
- UVa 673 - Parentheses Balance