AC

 •  25天前


include <bits/stdc++.h>

using namespace std; string s; int n;

int lv(char x) {

if (x == '<')
	return 1;
else if (x == '(')
	return 2;
else if (x == '[')
	return 3;
else if (x == '{')
	return 4;
else
	return 666;

} int main() {

cin >> n;
for (int k = 1; k <= n; k++) {
	cin >> s;
	stack<char> st;
	st.push('@');
	int flag = 0;
	for (int i = 0; i < s.size(); i++) {
		if (st.empty() && lv(s[i]) == 666) {
			cout << "NO" << endl;
			flag = 1;
			break;
		} else if (lv(s[i]) != 666 && lv(s[i]) <= lv(st.top())) {
			st.push(s[i]);
		} else if (lv(s[i]) != 666 && lv(s[i]) > lv(st.top())) {
			cout << "NO" << endl;
			flag = 1;
			break;
		} else {
			if (s[i] == ')' && st.top() == '(' || s[i] == '>' && st.top() == '<' || s[i] == '}' && st.top() == '{' || s[i] == ']'
			        && st.top() == '[') {
				st.pop();
				continue;
			} else {
				cout << "NO" << endl;
				flag = 1;
				break;
			}
		}

	}
	if (flag == 0 && st.top() == '@')
		cout << "YES" << endl;
	else {
		if (flag == 0)
			cout << "NO" << endl;
	}

}
return 0;

}


评论:

请先登录,才能进行评论