UVA227 谜题 Puzzle

UVA227 谜题 Puzzle

听过UVA输出格式有坑的,第一次做输入格式有坑的题,不愧是WF的题呀!

输入注意的细节挺多的,我以为是空格,结果是没有的

纪念一下

#include <bits/stdc++.h>


using namespace std;

int main()
{
    int kase=0;
    //ifstream fin("AC.in");
    //ofstream cout("AC.out");
    while(1)
    {

        int cnt=0;
        string op[10010];

        getline(cin,op[cnt++]);
        if(op[cnt-1][0]=='Z')   break;
        while(1)
        {
            getline(cin,op[cnt++]);
            int leng=op[cnt-1].size();
            if(op[cnt-1][leng-1]=='0')
                break;
        }
        cnt--;
        if(kase!=0) 
            cout<<endl;
        
        cout<<"Puzzle #"<<++kase<<":"<<endl;

        int x=-1,y=-1,st=0;
        for(int i=0;i<=4;i++)
        {
            int leng=op[i].size();
            if(leng!=5)
            {
                x=i,y=leng,st=1;
                break;
            }
            for(int j=0;j<leng;j++)
                if(op[i][j]==' ')   
                {
                    x=i;
                    y=j;
                    st=1;
                }
        }

        

        for(int i=5;i<=cnt;i++)
        {
            int leng=op[i].size();
            if(st==0)   break;
            
            for(int j=0;j<leng;j++)
            {

                char c=op[i][j];
                if(c=='0')  break;
                if( c=='A'||c=='B'||c=='L'||c=='R' )
                {
                    int xx,yy;
                    if(c=='A')      xx=x-1,yy=y;
                    if(c=='B')      xx=x+1,yy=y;
                    if(c=='L')      xx=x,yy=y-1;
                    if(c=='R')      xx=x,yy=y+1;
                    if(xx>=0&&xx<=4&&yy>=0&&yy<=4)
                    {
                        swap(op[x][y],op[xx][yy]);
                        x=xx,y=yy;
                    }
                    else 
                    {
                        st=0;
                        break;
                    }
                }
                else
                {
                    st=0;
                    break;
                }

            }

        }


        if(st==0)
        {
            cout<<"This puzzle has no final configuration."<<endl;
        }
        else
        {
            for(int i=0;i<=4;i++)
            {
                for(int j=0;j<=4;j++)
                {
                    cout<<op[i][j];
                    if(j!=4)
                        cout<<" ";
                }
                
               cout<<endl;
            }
        }
    }
    
    return 0;
}