文章
17
粉丝
0
获赞
57
访问
2.4k
#include <stdio.h>
#include <string.h>
int val(char c){
switch (c){
case '{':return 4;
case '[':return 3;
case '(':return 2;
case '<':return 1;
case '}':return -4;
case ']':return -3;
case ')':return -2;
case '>':return -1;
default: return 0;
}
}
int main(){
int n;
scanf("%d",&n);
getchar(); //清除缓冲区
while(n--){
char a[257];
gets(a);
int k = strlen(a);
int j=1;
char b[257];
b[0]=a[0];
int flag=1;
for(int i=1;i<k;i++){
//左括号
if(val(a[i])>0){
if(j==0||val(b[j-1])>=val(a[i])){
b[j++] =a[i];
}
}else if(val(b[j-1])<val(a[i])){
flag=0;
break;
}
//右括号
else if(val(a[i])<0){
if(val(a[i])+val(b[j-1])==0){
j--;
}else {
flag=0;
break;
}
}
}
if(flag==1 && j==0) puts("YES");
else puts("NO");
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发