AcWing 3703. 括号的匹配
原题链接
简单
作者:
ClearヽAble
,
2024-03-13 23:58:17
,
所有人可见
,
阅读 9
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,k,a[100];
char s[100];
scanf("%d",&n);
getchar();
for(int i=0;i<n;i++)
{
// cout << i << "第几次运行开始" << endl;
k=0;//计数
int t=0;
int j=0;
while(~scanf("%c",&s[j]))
{
// cout << s[j] ;
if(s[j]=='\n'&&j!=0) {t++;break;}
if(s[j]=='\n') break;
if(s[j]=='{') {a[j]=4;k++;j++;continue;}
if(s[j]=='[') {a[j]=3;k++;j++;continue;}
if(s[j]=='(') {a[j]=2;k++;j++;continue;}
if(s[j]=='<') {a[j]=1;k++;j++;continue;}
if(j==0&&k!=0) {
t++; }
//cout << a[j-2] <<" faf" << endl;
if(s[j-1]=='{'&&s[j]=='}'&&(j-2==-1||a[j-2]>=4)) j-=2;
else if(s[j-1]=='['&&s[j]==']'&&(j-2==-1||a[j-2]>=3)) j-=2;
else if(s[j-1]=='('&&s[j]==')'&&(j-2==-1||a[j-2]>=2)) j-=2;
else if(s[j-1]=='<'&&s[j]=='>'&&(j-2==-1||a[j-2]>=1)) j-=2;
else { //cout <<"最后一对: " << s[j-1] <<"退出" <<s[j] << endl;
t++; k++; }
j++;
}
// getchar();
if(t==0)
cout << "YES " << endl;
else cout << "NO" << endl;
//cout << i << "第几次运行结束" << endl;
}
return 0;
}