文章

76

粉丝

1

获赞

229

访问

4.4k

头像
括号的匹配 题解:
P1067 中山大学机试题
发布于2026年3月16日 16:06
阅读数 54

#include <iostream>
#include <stack>
#include <string>
using namespace std;

int level(char c){
    if(c == '{' || c == '}') return 1;
    if(c == '[' || c == ']') return 2;
    if(c == '(' || c == ')') return 3;
    if(c == '<' || c == '>') return 4;
    return 0;
}

bool match(char a, char b){
    return (a == '{' && b == '}') ||
           (a == '[' && b == ']') ||
           (a == '(' && b == ')') ||
           (a == '<' && b == '>');
}

int main(){
    int n;
    cin >> n;

    while(n--){
        string s;
        cin >> s;

        stack<char> st;
        bool ok = true;

        for(int i = 0; i < s.size(); i++){
            char c = s[i];

            if(c == '{' || c == '[' || c == '(' || c == '<'){
                if(!st.empty() && level(c) < level(st.top())){
                    ok = false;
                    break;
                }
...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发