UVa 227 - Puzzle

来源:互联网 发布:数据挖掘技术研究 编辑:程序博客网 时间:2024/05/01 22:43
怎么说呢,昨晚睡觉前看了这道题,思路很快就想了出来,然后就睡觉了,想第二天早上起来之后再把它写出来,第二天醒来后没花很长时间代码就写好了,刚开始因为忽略了 输入单个字符时 缓冲区的换行符问题,导致了错误,调试了很久才发现,归根到底还是对 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;}

0 0
原创粉丝点击