题意:
略。
思路:
模拟栈的操作。
AC代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#include <vector>
#include <set>
#define INF 0x3f3f3f
#define ll long long
using namespace std;
char a[10001];
char b[10001];
int main(){
int T;
scanf("%d",&T);
while(T--){
cin>>a;
int k=0;
int flag=0;
int len=strlen(a);
for(int i=0;i<len;i++){
if(a[i]=='(' ){
b[k++]='(';
}else if(a[i]=='['){
b[k++]='[';
}
else if(a[i]==')'){
if(b[k-1]=='('){
k--;
}else{
flag=1; break;
}
}
else if(a[i]==']'){
if(b[k-1]=='['){
k--;
}else{
flag=1; break;
}
}
}
if(k==0 && flag==0) printf("Yes\n");
else printf("No\n");
}
return 0;
}