92pts+#5RE 求助
查看原帖
92pts+#5RE 求助
394167
Cure_Wing楼主2021/8/16 18:56

RT\large\colorbox{white}{RT},提交记录在此https://www.luogu.com.cn/record/56088111
RE\large\colorbox{white}{RE}代码,求能人帮助:

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

谢谢求助!

2021/8/16 18:56
加载中...