这题是道#站外题# 本蒟蒻这道题只有45分 求调 QAQ
(),[], <>,{},判断输入的字符串中括号是否匹配。如果括号有互相包含的形式,从内到外必须是 <>, (), [], {},例如。输入:[()]输出:YES,而输入 ([]),([)]都应该输出NO。5
{}{}<><>()()[][]
{{}}{{}}<<>><<>>(())(())[[]][[]]
{{}}{{}}<<>><<>>(())(())[[]][[]]
{<>}{[]}<<<>><<>>>((<>))(())[[(<>)]][[]]
><}{{[]}<<<>><<>>>((<>))(())[[(<>)]][[]]
YES
YES
YES
YES
NO
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
int J(string s){
stack<char> a;
char t;
char x[4]={'(','[','<','{'};
char y[4]={')',']','>','}'};
for(int i=0;i<s.size();i++){
for(int j=0;j<4;j++){
if(s[i]==x[j]){
a.push(s[i]);
break;
}
}
for(int j=0;j<4;j++){
if(s[i]==y[j]){
if(a.empty())return 0;
t=a.top();
a.pop();
if(t!=x[j])return 0;
break;
}
}
}
return 1;
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>s;
if(J(s)==1)printf("YES\n");
else printf("NO\n");
}
return 0;
}