1 /*
2 Name: NYOJ--2--括号配对问题
3 Author: shen_渊
4 Date: 18/04/17 21:15
5 Description: 先入栈个‘#’ 就好做了
6 */
7 #include<bits/stdc++.h>
8 using namespace std;
9 bool cmp(char,char) ;
10 int main(){
11 int n;cin>>n;
12 while(n--){
13 string str;cin>>str;
14 stack<char> s;
15 while(!s.empty())s.pop();
16 s.push('#');//
17 for(int i=0; i<str.size(); ++i){
18 if(str[i]=='[' || str[i]=='(')
19 s.push(str[i]);
20 else if((str[i]==']' &&s.top()=='[') || (str[i]==')' && s.top()=='('))
21 s.pop();
22 else
23 s.push(str[i]);
24 }
25 if(s.top() != '#')cout<<"No"<<endl;
26 else cout<<"Yes"<<endl;
27 while(s.top() != '#')s.pop();
28 }
29 return 0;
30 }
31 bool cmp(char c,char cc){
32 if(c == '(' && cc == ')')return 1;
33 else if(c == '[' && cc == ']')return 1;
34 else return 0;
35 }
36 /*
37 仔细一想,于是……
38 */
39 #include<bits/stdc++.h>
40 using namespace std;
41 bool cmp(char,char) ;
42 int main(){
43 int n;cin>>n;
44 while(n--){
45 string str;cin>>str;
46 int a = 0,b = -1,pos;
47 while(a != b){
48 a = str.size();
49 while((pos = str.find("()")) != string::npos)str.erase(pos,2);
50 while((pos = str.find("[]")) != string::npos)str.erase(pos,2);
51 b = str.size();
52 }
53 if(str == "")cout<<"Yes"<<endl;
54 else cout<<"No"<<endl;
55 }
56 return 0;
57 }