60分求助,题目理解有问题
查看原帖
60分求助,题目理解有问题
892609
wzc2011楼主2025/1/20 10:05
#include <bits/stdc++.h>
using namespace std;
string s;
int c[110];//0无1对2错
int isok(int x){
    if(c[x]){
        return c[x];
    }
    if(s[x]=='('){
        for(int i=x+1;i<s.size();i++){
            if((s[i]==')'||s[i]==']')&&c[i]==0){
                if(s[i]==')'){
                    c[i]=1;
                    c[x]=1;
                    return 1;
                }
            }
        }
    }
    if(s[x]=='['){
        for(int i=x+1;i<s.size();i++){
            if((s[i]==')'||s[i]==']')&&c[i]==0){
                if(s[i]==']'){
                    c[i]=1;
                    c[x]=1;
                    return 1;
                }
            }
        }
    }
    if(s[x]==')'){
        for(int i=x-1;i>=0;i--){
            if((s[i]=='('||s[i]=='[')&&c[i]==0){
                if(s[i]=='('){
                    c[i]=1;
                    c[x]=1;
                    return 1;
                }
            }
        }
    }
    if(s[x]==']'){
        for(int i=x-1;i>=0;i--){
            if((s[i]=='('||s[i]=='[')&&c[i]==0){
                if(s[i]=='['){
                    c[i]=1;
                    c[x]=1;
                    return 1;
                }
            }
        }
    }
    c[x]=2;
    return 2;
}
int main(){
    cin>>s;
    for(int i=0;i<s.size();i++){
        isok(i);
    }
    for(int i=0;i<s.size();i++){
        if(s[i]=='('){
            if(c[i]==1){
                cout<<'(';
            }else{
                cout<<"()";
            }
        }
        if(s[i]=='['){
            if(c[i]==1){
                cout<<'[';
            }else{
                cout<<"[]";
            }
        }
        if(s[i]==')'){
            if(c[i]==1){
                cout<<')';
            }else{
                cout<<"()";
            }
        }
        if(s[i]==']'){
            if(c[i]==1){
                cout<<']';
            }else{
                cout<<"[]";
            }
        }
    }
}
2025/1/20 10:05
加载中...