UVa227 Puzzle(谜题)

解答:

 

 

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char s[7][7],op,a; 
int n=0,x,y,b=1,bb=1;
void putout()
{
    printf("This puzzle has no final configuration.\n");
    b=0;
    return;
}
int main()
{
    //freopen("1.txt","r",stdin);
   while(1)
   {
           n++;
           b=1;
           for(int i=1;i<=5;i++)
        {
               for(int j=1;j<=5;j++)
               {
                   s[i][j]=getchar();
                   if(s[i][j]=='Z') return 0;
                   if(s[i][j]==' ')
                   {
                       x=i;
                       y=j;
                }
            }
            s[0][0]=getchar();
        }
        printf("Puzzle #%d\n",n);
        op='1';
        for(int i=0;op!='0';i++)
        {
            op=getchar();
            if(op=='A')
            {
                if(x-1>=1)
                {
                    swap(s[x-1][y],s[x][y]);
                    x=x-1;
                    continue;
                }
                else
                {
                    putout();
                    break;
                }
            }
            else if(op=='B')
            {
                if(x+1<=5)
                {
                    swap(s[x+1][y],s[x][y]);
                    x=x+1;
                    continue;
                }
                else
                {
                    putout();
                    break;
                }
            }
            else if(op=='L')
            {
                if(y-1>=1)
                {
                    swap(s[x][y-1],s[x][y]);
                    y=y-1;
                    continue;
                }
                else
                {
                    putout();
                    break;
                }
            }
            else if(op=='R')
            {
                if(y+1<=5)
                {
                    swap(s[x][y+1],s[x][y]);
                    y=y+1;
                    continue;
                }
                else
                {
                    putout();
                    break;
                }
            }
            else if(op==' '||op=='\n'||op=='0') continue;
            putout();
            break;
        }
        while(op!='0') op=getchar();
        op=getchar();
        if(b)
        {
            for(int i=1;i<=5;i++)
            {
                for(int j=1;j<=5;j++)
                {
                    cout<<s[i][j]<<" ";
                }
                cout<<endl;
            }
        }
        cout<<endl;
   }
     // cout<<x<<y<<'*';
}  

 

posted @ 2019-07-06 09:09  satans  阅读(171)  评论(0编辑  收藏  举报