文章
68
粉丝
691
获赞
26
访问
575.6k
注意括号的嵌套,同级是可以互相嵌套的{{}}是对的
#include<iostream>
#include<stack>
#include<string>
#include<string.h>
using namespace std;
bool cmp(char s1, char s2) {
if (s1 == '<')s1 = 20;
if (s2 == '<')s2 = 20;
return s1 <= s2;
}
int main() {
int n; cin >> n; string s; cin.get();
for (int i = 0; i < n; i++) {
getline(cin, s); stack<char> sta; int sign = 1;
for (unsigned k = 0; k < s.size() && sign; k++) {
char t = s[k];
if (t == '{' || t == '[' || t == '(' || t == '<') {
char tt;
if (!sta.empty())tt = sta.top();
else tt = '{' + 1;
if (cmp(t, tt))sta.push(t);//满足次序要求,后嵌套的优先级低
else sign = 0;
}
else if (sta.empty())sign = 0;
else {
char tt = sta.top(); sta.pop();
if (tt == '{'&&t == '}')continue;
if (tt == '('&&t == ')')continue;
if (tt == '<'&&t == '>')continue;
if (tt == '['&&t == ']')continue;
sig...
登录后发布评论
我说怎么只过20%。。。
我说怎么只过20%。。。