UVA-3.5-谜题-227

来源:互联网 发布:网络一会好一会断 编辑:程序博客网 时间:2024/06/05 02:36

UVA-3.5-谜题-227

#include <stdio.h>#include <stdlib.h>#include <string.h>int x,y;int A (char map[10][10]);int B (char map[10][10]);int L (char map[10][10]);int R (char map[10][10]);char map[10][10];int mark=0;int main(){    memset(map,0,sizeof(map));    int count=1;    while(1)    {   int k;        int i;        if(count!=1)        {            char b;            b=getchar();        }        gets(map[1]);        //printf("map[1]=%s***\n",map[1]);        k=strlen(map[1]);        if(k==1&&map[1][0]=='Z')            break;        for(i=0;i<k;i++)        {            if(map[1][i]==' '||map[1][i]=='0')            {                x=1;                y=i;            }            if(k==4)            {                x=1;                y=4;                map[x][y]=' ';            }        }        int j;        for(i=2;i<=5;i++)           {               gets(map[i]);               int k1=strlen(map[i]);               for(j=0;j<k1;j++)               {                   if(map[i][j]==' ')                   {                       x=i;                       y=j;                   }               }               if(k1==4)               {                   x=i;                   y=4;                   map[x][y]=' ';               }           }        char turn;       // printf("****x=%d,y=%d\n\n",x,y);        //puts(map[1]);       while(1)       {           scanf("%c",&turn);           if(turn=='0')            break;           else           {               if(turn=='A')                {                    A(map);                    if(mark)                        break;                }               if(turn=='B')               {                    B(map);                   if(mark)                    break;               }               if(turn=='L')                {                      L(map);                      if(mark)                        break;                }               if(turn=='R')               {                    R(map);                   if(mark)                    break;               }           }       }        char b;        //printf("\n");        if(count!=1)            printf("\n");        printf("Puzzle #%d:\n",count++);        if(mark)        {  while(1)            {                scanf("%c",&turn);                if(turn=='0')                break;            }            mark=0;            printf("This puzzle has no final configuration.\n");            continue;        }        for(i=1;i<=5;i++)        {            for(j=0;j<5;j++)            {                if(j==0)                    printf("%c",map[i][j]);                else                    printf(" %c",map[i][j]);            }            printf("\n");        }    }    return 0;}int A (char map[10][10]){    char t;    if(x-1<=0)    {        mark=1;        return mark;    }    t=map[x-1][y];    map[x-1][y]=map[x][y];    map[x][y]=t;    x=x-1;}int B (char map[10][10]){    char t;    if(x+1>5)    {        mark=1;        return mark;    }    t=map[x+1][y];    map[x+1][y]=map[x][y];    map[x][y]=t;    x=x+1;}int L (char map[10][10]){    char t;    //printf("L1:%s*\n",map[x]);    if(y-1<0)    {        mark=1;        return mark;    }    t=map[x][y-1];    map[x][y-1]=map[x][y];    map[x][y]=t;    y=y-1;    //printf("L:%s\n",map[x]);}int R (char map[10][10]){    char t;    if(y+1>4)    {        mark=1;        return mark;    }    t=map[x][y+1];    map[x][y+1]=map[x][y];    map[x][y]=t;    y=y+1;}
0 0
原创粉丝点击