题目链接
括号匹配是典型的考查栈的题目
但是本题用数组模拟即可

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
char arr[maxn];
int main(){
	int n;
	while(cin>>n){
		string str;
		while(n--){
			cin>>str;
			int k=0,flag=0;
			for(int i=0;i<str.size();i++){
				if(str[i]=='('||str[i]=='['||str[i]=='{'){
					arr[k++] = str[i];
				}else if(str[i]==')'||str[i]==']'||str[i]=='}'){
					if(k<1){
						flag=1;
						break;
					}
					else if(str[i]==')'&&arr[k-1]!='('){
						flag=1;
						break;
					}else if(str[i]==']'&&arr[k-1]!='['){
						flag=1;
						break;
					}else if(str[i]=='}'&&arr[k-1]!='{'){
						flag=1;
						break;
					}else k--;
				}	
			}
			if(flag|| k != 0) cout<<"no"<<endl;
			else cout<<"yes"<<endl;
		}		
	}
	return 0;
}