不会用map建立检查顺序,就直接简单粗暴写逻辑检验

#include <bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define int long long

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

signed main() {
	int t;
	cin>>t;
	while(t--)
	{
	string str;
	cin>>str;
	stack<char> pk;
	int bj=1;
	for(int i=0;i<str.size();i++)
	{
		if(str[i]=='['||str[i]=='<'||str[i]=='('||str[i]=='{')
		{
			if(str[i]=='[')
			{
				if(!pk.empty())
				{
					if(pk.top()!='{'&&pk.top()!='[')
					{
						cout<<"NO"<<endl;
						bj=0;
						break;
					}
				}
			}
			if(str[i]=='(')
			{
				if(!pk.empty())
				{
					if(pk.top()!='{'&&pk.top()!='['&&pk.top()!='(')
					{
						cout<<"NO"<<endl;
						bj=0;
						break;
					}
				}
			}
			if(str[i]=='<')
			{
				if(!pk.empty())
				{
					if(pk.top()!='{'&&pk.top()!='['&&pk.top()!='('&&pk.top()!='<')
					{
						cout<<"NO"<<endl;
						bj=0;
						break;
					}
				}
			}
			if(str[i]=='{')
			{
				if(!pk.empty())
				{
					if(pk.top()!='{')
					{
						cout<<"NO"<<endl;
						bj=0;
						break;
					}
				}
			}
			pk.push(str[i]);
			continue;
		}
		if(str[i]=='>')
		{
			if(pk.empty())
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}else
			{
			if(pk.top()=='<') 
			{
				pk.pop();
			}else
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}
		}
		}
		if(str[i]==']')
		{
			if(pk.empty())
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}else
			{
			if(pk.top()=='[') 
			{
				pk.pop();
			}else
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}
		}
		}
		if(str[i]==')')
		{
		if(pk.empty())
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}else
			{
			if(pk.top()=='(') 
			{
				pk.pop();
			}else
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}
		}
		}
		if(str[i]=='}')
		{	if(pk.empty())
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}else
			{
			if(pk.top()=='{') 
			{
				pk.pop();
			}else
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}
		}
		}
	}
	if(bj)
	{
		cout<<"YES"<<endl;
	}
}
	
}