nyoj-2 括号配对问题 栈

来源:互联网 发布:javlib域名更新2017 编辑:程序博客网 时间:2024/05/22 03:29

括号配对问题

时间限制:3000 ms | 内存限制:65535 KB
难度:3

描述

现在,有一行括号序列,请你检查这行括号是否配对。

输入

第一行输入一个数N(0

输出

每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No

样例输入

3
[(])
(])
([])

样例输出

No
No
Yes

来源

网络

上传者

  naonao

题解

  栈

代码

#include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<stack> 5 #include<algorithm> 6 using namespace std; 7 int main(){ 8     int t; 9     cin >> t;10     getchar();11     while(t--){12         stack<char> stk;13         char c;14         while((c=cin.get())!='\n'){15             if(stk.empty()==true){16                 stk.push(c);17             }else if(c=='('||c=='['){18                 stk.push(c);19             }20             else if(c==')'){21                 if(stk.top()=='('){22                     stk.pop();23                 }else{24                     stk.push(c);25                 }26             }27             else if(c==']'){28                 if(stk.top()=='['){29                     stk.pop();30                 }else{31                     stk.push(c);32                 }33             }34         }35         if(stk.empty()==false)36             cout << "No" << endl;37         else38             cout << "Yes" << endl;39     }40     return 0;41 }
原创粉丝点击