WA on text 10
查看原帖
WA on text 10
1116212
Swan416ya楼主2024/1/7 19:41

大佬求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;
}

2024/1/7 19:41
加载中...