Cure_Wing @ 2021-08-16 18:56:24
$\large\colorbox{white}{RE}$代码,求能人帮助:
```cpp
#include<bits/stdc++.h>
using namespace std;
char s[555],st[555];
int t[555];
int sum,ssum;
int StrReplace(char strRes[],char from[],char to[]){//至于这个不要管它--注
int flag=0;
char *Ptr=NULL;
char *middle_flag=strstr(strRes,from);
if(middle_flag==NULL) return flag;
int len=strlen(middle_flag);
Ptr=(char*)malloc(len*sizeof(char));
if(NULL==Ptr) return flag;
strcpy(Ptr,middle_flag+(strlen(from)));
if(middle_flag!=NULL){
/* code */
*middle_flag='\0';
strcat(strRes,to);
strcat(strRes,Ptr);
free(Ptr);
flag=1;
}
return flag;
}
void insert(char* s1,char* s2,int v){
int i,j;
char *t=(char *)malloc(sizeof(char)*strlen(s1)+1);
if(!t){
printf("Application memory failure...\n");
return;
}
for(i=v,j=0;t[j]=s1[i];j++,i++);
for(i=v,j=0;s1[i]=s2[j];j++,i++);
for(j=0;s1[i]=t[j];j++,i++);
free(t);
}
int main(){
scanf("%s",s);
strcpy(st,s);
if(s==""){
puts("");
return 0;
}
for(int i=0;i<=strlen(s)-1;++i){
if(s[i]=='(') t[i]=1;
if(s[i]=='[') t[i]=11;
if(s[i]=='['&&s[i-1]=='(') t[i-1]=1;
if(s[i]=='('&&s[i-1]=='[') t[i-1]=11;
if(s[i]==')'){
if(i==0) t[i]=2;
else if(s[i-1]=='(') t[i-1]=0;
else if(s[i-1]==')'||s[i-1]==']'){
bool ff=1;
for(int j=i-1;j>=0;--j)
if(t[j]==1){
t[j]=0;ff=0;
break;
}else if(t[j]==11){
t[j]=11;t[i]=2;ff=0;break;
}
if(ff) t[i]=2;
}
else if(s[i-1]=='[') t[i-1]=11,t[i]=2;
}
if(s[i]==']'){
if(i==0) t[i]=12;
else if(s[i-1]=='[') t[i-1]=0;
else if(s[i-1]==']'||s[i-1]==')'){
bool ff=1;
for(int j=i-1;j>=0;--j)
if(t[j]==11){
t[j]=0;ff=0;
break;
}else if(t[j]==1){
t[j]=1;t[i]=12;ff=0;break;
}
if(ff) t[i]=12;
}
else if(s[i-1]=='(') t[i-1]=1,t[i]=12;
}
}
int tx=0;
for(int i=0;i<=strlen(s)-1;++i){
if(t[i]==1) insert(st,")",i+1+tx++);
if(t[i]==2) insert(st,"(",i+tx++);
if(t[i]==11) insert(st,"]",i+1+tx++);
if(t[i]==12) insert(st,"[",i+tx++);
}
puts(st);
return 0;
}
```
谢谢求助!