大佬求de 实在难以理解为啥
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char s[1111]= {0};
int isChange[1111]= {0};
scanf("%s",s);
int n=strlen(s),cnt=0,flag=0;
if(s[0]==')'||s[0]=='}'||s[0]==']'||s[0]=='>')
{
flag=1;
goto end;
}
for(int i=1; i<n; i++)
{
int breakthrough=0;
if(s[i]=='>')
{
for(int j=i; j>=0; j--)
{
if(isChange[j]==1||s[j]==']'||s[j]=='}'||s[j]==')'||s[j]=='>')
continue;
if(s[j]=='<')
{
isChange[j]=1;
breakthrough=1;
}
else if((s[j]=='['||s[j]=='{'||s[j]=='(')&&isChange[j]==0)
{
isChange[j]=1;
s[j]='<';
cnt++;
breakthrough=1;
}
break;
}
}
else if(s[i]==']')
{
for(int j=i; j>=0; j--)
{
if(isChange[j]==1||s[j]==']'||s[j]=='}'||s[j]==')'||s[j]=='>')
continue;
if(s[j]=='[')
{
isChange[j]=1;
breakthrough=1;
}
else if((s[j]=='<'||s[j]=='{'||s[j]=='(')&&isChange[j]==0)
{
isChange[j]=1;
s[j]='[';
cnt++;
breakthrough=1;
}
break;
}
}
else if(s[i]=='}')
{
for(int j=i; j>=0; j--)
{
if(isChange[j]==1||s[j]==']'||s[j]=='}'||s[j]==')'||s[j]=='>')
continue;
if(s[j]=='{')
{
isChange[j]=1;
breakthrough=1;
}
else if((s[j]=='<'||s[j]=='['||s[j]=='(')&&isChange[j]==0)
{
isChange[j]=1;
s[j]='{';
cnt++;
breakthrough=1;
}
break;
}
}
else if(s[i]==')')
{
for(int j=i; j>=0; j--)
{
if(isChange[j]==1||s[j]==']'||s[j]=='}'||s[j]==')'||s[j]=='>')
continue;
if(s[j]=='(')
{
isChange[j]=1;
breakthrough=1;
}
else if((s[j]=='<'||s[j]=='{'||s[j]=='[')&&isChange[j]==0)
{
isChange[j]=1;
s[j]='(';
cnt++;
breakthrough=1;
}
break;
}
}
else breakthrough=-1;
printf("第%d次:isChange[0]=%d breakthrough=%d\n",i,isChange[0],breakthrough);
printf("%s\n",s);
if(breakthrough==0)
{
flag=1;
break;
}
}
end:
if(flag==1)
printf("Impossible\n");
else
{
printf("%d\n",cnt);
}
return 0;
}