做了两天了,死活不AC,后来发现是判断边界出了问题,改了下后就AC了。




#include<stdio.h>
#include<string.h>
char s[10][10],str[10000];
int main()
{
    int i,j,time=1;
    while(1)
    {
        memset(s,0,sizeof(s));
        memset(str,0,sizeof(str));
        int m=0,n=0,k;
        int q=1;
        char temp;
        for(i=0; i<5; i++)
            for(j=0;j<6;j++)
        {
            s[i][j]=getchar();
            if(s[i][j]=='Z')
                return 0;
        }
        for(i=0;; i++)
        {
            scanf("%c",&str[i]);
            if(str[i]=='0')
                break;
        }
        k=strlen(str);
        for(i=0; i<5; i++)
            for(j=0; j<5; j++)
            {
                if(s[i][j]==' ')
                {
                    m=i;
                    n=j;
                    break;
                }
            }
        for(i=0; i<k; i++)
        {
            if(str[i]=='0')
                break;
            if(str[i]=='A'&&m)
            {
                s[m][n]=s[m-1][n];
                s[m-1][n]=' ';
                --m;
                q=1;
                continue;
            }
            else if(str[i]=='B'&&m!=4)
            {
                s[m][n]=s[m+1][n];
                s[m+1][n]=' ';
                ++m;
                q=1;
                continue;
            }
            else if(str[i]=='R'&&n!=4)
            {
                s[m][n]=s[m][n+1];
                s[m][n+1]=' ';
                ++n;
                q=1;
                continue;
            }
            else if(str[i]=='L'&&n)
            {
                s[m][n]=s[m][n-1];
                s[m][n-1]=' ';
                --n;
                q=1;
                continue;
            }
            else if(str[i]=='\n')
                continue;
            else
            {
                q=0;
                break;
            }
        }
        if(time!=1)
            printf("\n");
        printf("Puzzle #%d:\n",time);
        if(q==1)
        {
            for(i=0; i<5; i++)
            {
                for(j=0; j<5; j++)
                {
                    if(j!=4)
                        printf("%c ",s[i][j]);
                    else
                        printf("%c",s[i][j]);
                }
                    printf("\n");
            }
        }
        else
        {
            printf("This puzzle has no final configuration.\n");
        }
        if(scanf("%c",&s[0][0])=='Z')
            break;
        time++;
    }
    return 0;
}