1 条题解

  • 0
    @ 2024-2-28 15:17:31
    #include <bits/stdc++.h>
    using namespace std;
    
    int a[128]; //括号优先级
    char b[128]; //右括号 -> 左括号
    int main() {
        a['<'] = 1; a['('] = 2; 
        a['['] = 3; a['{'] = 4;
        b['>'] = '<'; b[')'] = '(';
        b[']'] = '['; b['}'] = '{';
        
        int n; cin>>n;
        while(n--) {
            stack<char> sk;
            string s;
            cin>>s;
            bool flag = true;
            for(auto c : s) {
                if(a[c]) {//左括号
                    if(sk.empty()) sk.push(c);
                    else {
                        if(a[c] <= a[sk.top()])
                            sk.push(c);
                        else {
                            flag = false;
                            break;
                        };
                    }
                } else {//右括号
                    if(!sk.empty() && sk.top() == b[c])
                        sk.pop();
                    else {
                        flag = false;
                        break;
                    };
                }
            }
            if(sk.empty() && flag) cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
        return 0;
    }
    
    • 1

    信息

    ID
    833
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    26
    已通过
    10
    上传者