8,9,10,11过不去,啊啊啊求大佬指导
  • 板块P1241 括号序列
  • 楼主Azhiqi
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/12/31 00:11
  • 上次更新2023/12/31 00:34:41
查看原帖
8,9,10,11过不去,啊啊啊求大佬指导
1091800
Azhiqi楼主2023/12/31 00:11
#include<iostream>
#include<vector>
#include<stack>
using namespace std;

struct node{
    char pare;
    int num;
    int jud;
};
node temp_node;
vector<char> ans;
vector<node> firs;
stack<node> firs_pare;

int main(){
    string s;
    cin >> s;
    node* tem;
    for(int i = 0;i < s.length();i ++){
        if(firs_pare.empty()){
            temp_node.pare = s[i];
            temp_node.num = i;
            temp_node.jud = 0;
            firs.push_back(temp_node);
            firs_pare.push(temp_node);
        }else{
            tem = &firs_pare.top();
            temp_node.pare = s[i];
            temp_node.num = i;
            temp_node.jud = 0;
            firs.push_back(temp_node);
            firs_pare.push(temp_node);
            if(tem->pare == '(' && s[i] == ')'){
                firs[tem->num].jud = 2;
                firs[i].jud = 3;
                firs_pare.pop(); firs_pare.pop();
            }else if(tem->pare == '[' && s[i] == ']'){
                firs[tem->num].jud = 4;
                firs[i].jud = 5;
                firs_pare.pop(); firs_pare.pop();
            }else{
                continue;
            }
        }
    }
    for(auto it = firs.begin();it != firs.end();it ++){
        if(it->jud == 0 && (it->pare == '(' || it->pare == ')')){
            printf("()");
        }else if(it->jud == 0 && (it->pare == '[' || it->pare == ']')){
            printf("[]");
        }else{
            printf("%c",it->pare);
        }
    }
    return 0;
}

2023/12/31 00:11
加载中...