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;
}