文章

15

粉丝

27

获赞

0

访问

2.3k

头像
括号的匹配 题解:想问一下大佬为什么只能过20%
P1067 中山大学2019年机试题
发布于2024年3月30日 11:11
阅读数 169

#include <bits/stdc++.h>
using namespace std;

int level(char a){
    int level;
    if(a=='<')level=1;
    else if(a=='(')level=2;
    else if(a=='[')level=3;
    else if(a=='{')level=4;
    else level=5;
    return level;
}

int main(){
    int n;
    while(cin>>n){
        string s;
        while(n--){
            cin>>s;
            stack<char> st;
            int flag=0;
            for(int i=0;i<s.size();i++){
                if(st.size()==0){
                    st.push(s[i]);
                }else{
                    char top=st.top();
                    if(((top=='(')&&s[i]==')')||((top=='[')&&s[i]==']')||((top=='<')&&s[i]=='>')||((top=='{')&&s[i]=='}')){
                        st.pop();
                    }else{
                        if(level(top)>level(s[i])){
                            st.push(s[i]);
                        }else{
                            fl...
登录查看完整内容


登录后发布评论

1 条评论
RingoCrystal
2024年3月30日 11:15

仔细翻阅了一下大佬的题解,理解了,{{}}判定也应该是通过的,题目样例并没有说明

所以只需要改成level(top)>=level(s[i])即可ac

赞(1)