Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
99305 huatao1030 表达式括号匹配1 C++ 解答错误 0 0 MS 248 KB 896 2023-08-22 16:08:19

Tests(0/10):


#include<cstdio> #include<iostream> #include<cstring> using namespace std; const int N = 300; const char f[] = {'{','[','(','<','}',']',')','>'}; int T, a[N],sta[N]; int main(){ cin >> T; while(T --){ string s; cin >> s; int lena = s.size(); int top = 0; bool flag1 = true;//最开始默认匹配 for(int i = 0; i < lena ;i++) for(int j = 0; j < 8; j++) if(s[i] == f[j]) { a[i] = j; break; } for(int i = 0; i < lena;i++) if(a[i] <= 3){ if(!top || a[i] >= sta[top]) sta[++top] = a[i]; else { flag1 = false; break; } } else{ if(top && sta[top] + 4 == a[i]) top--; else { flag1 = false; break; } } if(top) cout << "NO\n"; else if(flag1) cout << "YES\n"; else cout << "NO\n"; } return 0; }


测评信息: