70分菜鸟求助

P1241 括号序列

Xyyo @ 2022-07-16 17:36:36

可以试一下([)]的样例

#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
using namespace std;
string a,b;
int c[105];
stack<char>st;
stack<int>s;
void cyh(){
    for(int i=0;i<a.length();i++){
        if(st.size()==0);
        else{
            if((st.top()=='('&&a[i]==')')||(st.top()=='['&&a[i]==']')){
                st.pop();
                c[i]=0;
                c[s.top()]=0; 
                s.pop();
                continue;
            }
        }
        st.push(a[i]);
        s.push(i);
    }
}
void wyn(){
    for(int i=0;i<a.length();i++){
        if(c[i]==1){
            cout<<a[i]<<')';
        }
        else if(c[i]==2){
            cout<<'('<<a[i];
        }
        else if(c[i]==3){
            cout<<a[i]<<']';
        }
        else if(c[i]==4){
            cout<<'['<<a[i];
        }
        else{
            cout<<a[i];
        }
    }
}
int main()
{
    cin>>a;
    memset(c,0,sizeof(a.length()));
    for(int i=0;i<a.length();i++){
        if(a[i]=='(') c[i]=1;
        if(a[i]==')') c[i]=2;
        if(a[i]=='[') c[i]=3;
        if(a[i]==']') c[i]=4; 
    }
    cyh();
    wyn();
    return 0;
}

|