UVa 227 - Puzzle

来源:互联网 发布:通达信指标公式源码 编辑:程序博客网 时间:2024/05/02 01:34

昨天晚自习看的题目,马上就有思路了,建一个二维数组然后根据输入的字符交换。晚自习结束之后,因为最近熬夜有点多,回来就睡了。今天早上开始打的,中途因为对getchar的用法不是很了解,而且输入移动方法时会有“\n”,处理不好所以卡住了好久。最后提交时,忘了删文件重定向输入语句了,RE了一次,看了好久都没检查出来,以后要避免出现这种情况。


这是最后Ac的代码:

#include <stdio.h>#include <string.h>#define maxn 10000#define max 10int main(){    char a[max][max];    char s[maxn];    int n,i,j,l,x,y,z,temp,first=1,count=1;    while(1)    {    z=1;    for(i=0;i<5;i++)    {        for(j=0;j<6;j++)        {            a[i][j]=getchar();            if(a[i][j]==' ')                x=i,y=j;            if(a[i][j]=='Z')                goto END;        }    }    for(i=0;;i++)    {        s[i]=getchar();        if(s[i]=='\n')            s[i]=getchar();        if(s[i]=='0')        {            getchar();            break;        }    }    n=strlen(s);    for(i=0;i<n;i++)    {        if(!z)            break;        if(s[i]=='A')        {            if(!x)            {                z=0;                break;            }            a[x][y]=a[x-1][y];            a[x-1][y]=' ';            x--;        }        else if(s[i]=='B')        {            if(x==4)            {                z=0;                break;            }            a[x][y]=a[x+1][y];            a[x+1][y]=' ';            x++;        }        else if(s[i]=='L')        {            if(!y)            {                z=0;                break;            }            a[x][y]=a[x][y-1];            a[x][y-1]=' ';            y--;        }        else if(s[i]=='R')        {            if(y==4)            {                z=0;                break;            }            a[x][y]=a[x][y+1];            a[x][y+1]=' ';            y++;        }        else if(s[i]=='0')            break;        else            z=0;    }    if(z)    {        if(first)            first=0;        else            printf("\n");        printf("Puzzle #%d:\n",count);        for(i=0;i<5;i++)        {            for(j=0;j<5;j++)            {                if(j)                    printf(" %c",a[i][j]);                else                    printf("%c",a[i][j]);            }            printf("\n");        }        count++;    }    else    {        if(first)            first=0;        else            printf("\n");        printf("Puzzle #%d:\n",count);        printf("This puzzle has no final configuration.\n");        count++;    }    }    END:    return 0;}


0 0