wonderful answer on 6 7 8 9
查看原帖
wonderful answer on 6 7 8 9
1356485
wai_xing_sheng_wu楼主2025/7/29 13:57
#include<bits/stdc++.h>
using namespace std;
struct lhh
{
    int pos,val;
};
lhh st[109];
int top;
int ok[109],data[109],n;
int main()
{
    n=0;
    char c;
    while(cin>>c)
    {
        if(c=='(')
        {
            data[++n]=-1;
        }
        if(c=='['){data[++n]=-2;}
        if(c==')'){data[++n]=1;}
        if(c==']'){data[++n]=2;}
    }
    top=-1;
    for(int i=1;i<=n;i++)
    {
        if(data[i]>0)
        {
            if(top<0){ok[i]=1;}
            else
            {
                if(st[top].val+data[i]!=0)
                {
                    ok[st[top].pos]=1;
                    ok[i]=1;
                }
                top--;
            }
        }
        else
        {
            top++;
            st[top]={i,data[i]};
        }
    }
    while(top>-1)
    {
        ok[st[top].pos]=1;
        top--;
    }
    for(int i=1;i<=n;i++)
    {
        if(ok[i]==0)
        {
            if(data[i]==-1)cout<<"(";
            if(data[i]==-2)cout<<"[";
            if(data[i]==1)cout<<")";
            if(data[i]==2)cout<<"]";
        }
        else
        {
            if(data[i]==-1)cout<<"()";
            if(data[i]==-2)cout<<"[]";
            if(data[i]==1)cout<<"()";
            if(data[i]==2)cout<<"[]";
        }
    }
    return 0;
}

2025/7/29 13:57
加载中...