UVa 227 - Puzzle

怎么说呢,昨晚睡觉前看了这道题,思路很快就想了出来,然后就睡觉了,想第二天早上起来之后再把它写出来,第二天醒来后没花很长时间代码就写好了,刚开始因为忽略了 输入单个字符时 缓冲区的换行符问题,导致了错误,调试了很久才发现,归根到底还是对 getchar(); 吃换行符理解的不够深入,改过来之后UVa 上的测试用例过了,然后提交,结果WA了, 后来一直在看程序,也没发现哪里有错,调试了一下午,提交还是不对,最后实在是无奈,去搜了下 别人的代码,发现自己的代码输出时 格式有问题,空行的位置不对,最后改了下,终于AC了!          感觉太坑了!!   还有就是一定要学好英语啊,理解好题意
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
    int i,j,k,m,n,r,s,t=0,l,z,c=1;
    char a[10][10],b[100000];
    while(scanf("%c",&a[0][0]) != EOF)
    {
        t++;
        if(a[0][0] == 'Z')
            return 0;
        for(i=0; i<5; i++)
            for(j=0; j<5; j++)
            {
                if(i==0 && j==0)
                    continue;
                scanf("%c",&a[i][j]);
                if(j == 4)
                    getchar();
            }
        a[4][5]='\0';
        for(l=0; ;l++)
        {
            scanf("%c",&b[l]);
            if(b[l] == '0')
            {  b[l]='\0';  break;     }
        }
        getchar();
        if(t!=1)
            printf("\n");
        printf("Puzzle #%d:\n",c);    c++;
        for(i=0; i<5; i++)
            for(j=0; j<5; j++)
                if(a[i][j] == 32)
                {  m=i;  n=j; }
        for(i=0; i<l; i++)
        {
            if(b[i] == 'A')
            {
                m--;
                if(m < 0)
                {
                    printf("This puzzle has no final configuration.\n");
                    
                    goto loop;
                }
                else
                {
                    z=a[m][n];
                    a[m][n]=a[m+1][n];
                    a[m+1][n]=z;

                }
            }
            else if(b[i] == 'B')
            {
                m++;
                if(m >4)
                {
                    printf("This puzzle has no final configuration.\n");
                    
                    goto loop;
                }
                else
                {
                    z=a[m][n];
                    a[m][n]=a[m-1][n];
                    a[m-1][n]=z;

                }
            }
            else if(b[i] == 'L')
            {
                n--;
                if(n < 0)
                {
                    printf("This puzzle has no final configuration.\n");
                    
                    goto loop;
                }
                else
                {
                    z=a[m][n];
                    a[m][n]=a[m][n+1];
                    a[m][n+1]=z;

                }
            }

            else if(b[i] == 'R')
            {
                n++;
                if(n > 4)
                {
                    printf("This puzzle has no final configuration.\n");
                    
                    goto loop;
                }
                else
                {
                    z=a[m][n];
                    a[m][n]=a[m][n-1];
                    a[m][n-1]=z;

                }
            }

          }

          for(i=0; i<5; i++)
          {
              t=0;
             for(j=0; j<5; j++)
             {
                 if(t==0)
                    {printf("%c",a[i][j]);  t++;}
                 else
                     printf(" %c",a[i][j]);
                 if(j == 4)
                    printf("\n");

             }
          }

          memset(a,'\0',sizeof(a));
          memset(b,'\0',sizeof(b));
        loop:  {
                  memset(a,'\0',sizeof(a));
                  memset(b,'\0',sizeof(b));
                  continue;}
    }
    return 0;
}

你可能感兴趣的:(UVa 227 - Puzzle)