NYOJ 2 括号配对问题 (栈 stack)
来源:互联网 发布:dota2新英雄语音知乎 编辑:程序博客网 时间:2024/05/22 03:22
括号配对问题
时间限制:3000 ms | 内存限制:65535 KB
难度:3
- 描述
- 现在,有一行括号序列,请你检查这行括号是否配对。
- 输入
- 第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
- 输出
- 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
- 样例输入
3[(])(])([[]()])
- 样例输出
NoNoYes
思路: 用 栈的 先进后出 模拟 判断
已AC代码:
#include<cstdio>#include<cstring>#include<stack>using namespace std;char ch[11000],top;int main(){int N,i,j,len;scanf("%d",&N);while(N--){stack<char>Q;scanf("%s",ch);len=strlen(ch); // 如果长度为奇数 一定不可能,第一个字符为 ']'或')' 也不可能 if(len%2==1||ch[0]==']'||ch[0]==')') {printf("No\n");continue;}Q.push(ch[0]); // 第一个先入栈 for(i=1;i<len;++i){if(!Q.empty()) // 栈不为空时 {top=Q.top(); // 取队尾元素 if(top=='('&&ch[i]==')'||top=='['&&ch[i]==']') // 判断是否匹配 Q.pop(); // 如果配对就将 栈 中元素 弹出 elseQ.push(ch[i]); // 不配对就将新字符加入栈}else //栈为空时 Q.push(ch[i]);}if(Q.empty()) // 如果完全匹配 栈为空 printf("Yes\n");else printf("No\n");}return 0;}
0 0
- NYOJ 2 括号配对问题 (栈 stack)
- NYOJ 2 括号配对问题 (栈 stack)
- NYOJ 2 括号配对问题(栈stack)
- NYOJ 2 括号配对问题(栈)
- 括号配对问题--nyoj-2(栈)
- NYOJ 2 括号配对问题(栈)
- NYoj 2 括号配对问题(栈)
- 栈 NYOJ 2 (括号配对问题)
- Num 15: NYOJ: 题目0002 : 括号配对问题 [ 栈(stack) ]
- NYOJ 2 括号配对问题(STL—stack解法)
- 括号配对问题(NYOJ) ----stack的应用
- nyoj 括号配对问题(stack的使用)
- NYOJ 2 括号配对问题 【栈】
- nyoj 2括号配对问题(栈)
- nyoj-2 括号配对问题 栈
- nyoj 括号配对问题(栈)
- NYOJ 括号配对问题(栈)
- NYOJ 括号配对问题(不用栈)
- java 子类重写父类的方法应注意的问题
- poj 1324 Holedox Moving(bfs+状态压缩)
- 黑马程序员------异常小结
- 费用流 csu1506 Double Shortest Paths
- pat(A) 2-06. 数列求和(模拟摆竖式相加)
- NYOJ 2 括号配对问题 (栈 stack)
- 黑马程序员------Foundatin之求单个文件的代码行数
- 文章标题
- Choose the best route
- CDN流量放大攻击思路
- 简单的视图切换(tag)
- Python Foundation - part two
- 项目实施管理的感受--大数据
- java程序员常用的工具名称--知道中文意思吗