求救,才12分

P1241 括号序列

Jared0503 @ 2024-01-23 19:58:52

代码献上

#include<bits/stdc++.h>
using namespace std;
struct node{
    char s[101];
    int num[101],top;
}op[2];
int i,j;
string bin="",ans="";
int main()
{
    char a;
    while(cin>>a)
    {
        bin=bin+' '+a+' ';
        if(a=='(') op[0].s[++op[0].top]=a,op[0].num[op[0].top]=++i;
        else if(a=='[') op[1].s[++op[1].top]=a,op[1].num[op[1].top]=++i;
        else if(a==')'&&op[0].s[op[0].top]=='(') op[0].top--;
        else if(a==')') op[0].s[++op[0].top]=a,op[0].num[op[0].top]=++i;
        else if(a==']'&&op[1].s[op[1].top]=='[') op[1].top--;
        else if(a==']') op[1].s[++op[1].top]=a,op[1].num[op[1].top]=++i;
    }
    //(num.top()+1)*2-1 
    //0123
    //([()
    //
    //012345678901
    //  (  [  (  ) 
    while(op[0].top)
    {
//      cout<<op[0].num[op[0].top]<<' ';
        if(op[0].s[op[0].top]=='(') bin[op[0].num[op[0].top]*3]=')';
        else bin[op[0].num[op[0].top]*3]='(';
        op[0].top--;
    }
    while(op[1].top)
    {
//      cout<<op[1].num[op[1].top]<<' ';
        if(op[1].s[op[1].top]=='[') bin[op[1].num[op[1].top]*3]=']';
        else bin[op[1].num[op[1].top]*3]='[';
        op[1].top--;
    }
    for(i=0;i<bin.size();i++) if(bin[i]!=' ') ans+=bin[i];
    cout<<ans;
}

by D23lhc @ 2024-01-23 20:13:02

#include <bits/stdc++.h>
using namespace std;
int top,w[110];
string a;
char s[110],c[110];
int main()
{
    cin >> a;
    int n=a.length();
    for(int i=0;i<n;i++)
    {
        if(a[i] == '(' || a[i] == '[')
        {
            s[++top]=a[i];
            w[top]=i;
            if(a[i] == '(') c[i]=')';
            else c[i]=']';
        }
        if(a[i] == ')')
        {
            if(top && s[top] == '(') {c[w[top]]=' '; top--;}
            else c[i]='(';
        } 
        if(a[i] == ']')
        {
            if(top && s[top] == '[') {c[w[top]]=' '; top--;}
            else c[i]='[';
        }
    }
    for(int i=0;i<n;i++)
    {
        if(c[i] == '(' || c[i] == '[') printf("%c%c",c[i],a[i]);
        else if(c[i] == ')' || c[i] == ']') printf("%c%c",a[i],c[i]);
        else printf("%c",a[i]);
    }
    return 0;
}

@Jared0503


by D23lhc @ 2024-01-23 20:14:01

给个关注 QWQ


by Jared0503 @ 2024-01-24 09:01:16

@D23lhc 已关,谢谢


|