蒟蒻56分求助

P1241 括号序列

ordoki @ 2023-08-02 00:00:31

#include<bits/stdc++.h>
#define null NULL
using namespace std;
struct node{
    char data;
    int pos;
}Stack[105],S[105];
char s[105];
int top,sl,failer[105],cnt;
int main(){
    scanf("%s",s);
    sl=strlen(s);
    for(int i=0;i<sl;i++)
        S[i].data=s[i];
    for(int i=0;i<sl;i++){
        if((s[i]=='(')||(s[i]=='[')){
            Stack[++top].data=s[i];
            Stack[top].pos=i;
        }
        else{
            if(s[i]==')'){
                if(Stack[top].data=='(')
                    top--;
                else
                    failer[++cnt]=i;
            }
            if(s[i]==']'){
                if(Stack[top].data==']')
                    top--;
                else
                    failer[++cnt]=i;
            }
        }
    }
    for(int i=1;i<=top;i++)
        S[Stack[i].pos].pos=1;
    for(int i=1;i<=cnt;i++)
        S[failer[i]].pos=1;
    for(int i=0;i<sl;i++){
        if(S[i].pos)
            switch(S[i].data){
                case'(':
                case')':
                    printf("()");
                    break;
                case'[':
                case']':
                    printf("[]");
                    break;
                default:
                    printf("%c",S[i].data);
            }
        else
            printf("%c",S[i].data);
    }
    return 0;
}

评测记录


by Root808 @ 2023-08-04 19:04:27

28行那里,应该是

if(Stack[top].data=='[')

|