xdoj括号匹配
#include <iostream>
#include <stack>
using namespace std;
bool CheckBrackets(string expr) {
stack<char> s;
for (char c : expr) {
if (c == '(' || c == '[' || c == '{') {
s.push(c);
} else if (c == ')' || c == ']' || c == '}') {
if (s.empty()) {
return false;
}
char top = s.top();
s.pop();
if ((c == ')' && top != '(') || (c == ']' && top != '[') || (c == '}' && top != '{')) {
return false;
}
}
}
//最后,右括号匹配完,如果栈中还有左括号,就是false,栈中没了,就是true
return s.empty();
}
int main() {
int n;
cin >> n;
int judge[n];
string expr;
for (int i = 0; i < n; i++) {
cin >> expr;
if (CheckBrackets(expr)) {
judge[i] = 1;
} else {
judge[i] = 0;
}
}
for (int i = 0; i < n; i++) {
if (judge[i]) cout << "Yes" << endl;
else cout << "No" << endl;
}
return 0;
}
偷懒用了C++里的stl,但是提交一直显示编译错误,这是什么原因啊?