63菜鸟求助

P1241 括号序列

sleepwalking1 @ 2022-07-16 15:21:49

#include<bits/stdc++.h>
using namespace std;
int  a[110],x;
char b[110],c[110];
int main()
{
    cin>>c;
    int len=strlen(c);
    for(int i=0;i<len;i++){
        if(c[i]=='('){
            x++;
            a[x]=i;
            b[i]=')';
        }
        if(c[i]=='['){
            x++;
            a[x]=i;
            b[i]=']';
        }
        if(c[i]==')' || c[i]==']')
            if(x!=0 || b[a[x]]!=c[i])
                if(c[i]==')') b[i]='('; 
            else b[i]='[';
        else b[a[x--]]=' ';
    }
    for(int i=0;i<len;i++){
        if(b[i]=='(' || b[i]=='[') cout<<b[i];
        cout<<c[i];
        if(b[i]==')' || b[i]==']') cout<<b[i];
    }
    return 0;
}

测试点2,3,4,12,13 求助


by 卷王 @ 2022-07-20 16:35:50

对比一下?

#include<bits/stdc++.h>
using namespace std;string s;int a[101];
int main() { cin>>s;
    for(int i=0;i<s.size();i++) {
        if(s[i]==')'&&a[i]==0)
            for(int j=i-1;j>=0;j--)
                if(s[j]=='('&&a[j]==0){a[i]=1,a[j]=1;break;}
                else if(s[j]=='['&&a[j]==0) break;
        if(s[i]==']'&&a[i]==0)
            for(int j=i-1;j>=0;j--)
                if(s[j]=='['&&a[j]==0){a[i]=1,a[j]=1;break;}
                else if(s[j]=='('&&a[j]==0) break;
    }for(int i=0;i<s.size();i++) {
        if(a[i]) cout<<s[i];
        else if(s[i]=='('||s[i]==')') cout<<"()";
        else cout<<"[]";
    } return 0;
}

|