poj 1573

#include<iostream>
#include<cstring>
using namespace std;
const int MAXN = 12;
int main()
{
    int step[MAXN][MAXN];
    bool vis[MAXN][MAXN];
    char Room[MAXN][MAXN];
    int h_room,l_room,r_pos;
    while(cin>>h_room>>l_room>>r_pos)
    {
        memset(step,0,sizeof(step));
        memset(vis,false,sizeof(vis));
        for(int i=0;i<MAXN;i++)
            for(int j=0;j<MAXN;j++)
                Room[i][j] = 'O';
        if(h_room==0&&l_room==0&&r_pos==0)
            break;
        for(int i=1;i<=h_room;i++)
            for(int j=1;j<=l_room;j++)
            {
                cin>>Room[i][j];
            }
        int a(1),b(r_pos),count(0);
        while(1)
        {
            if(vis[a][b]==true)
            {
                cout<<step[a][b]<<" step(s) before a loop of "<<count-step[a][b]<<" step(s)"<<endl;
                break;
            }
            step[a][b]=count;
            char ch(Room[a][b]);
            if(ch=='O')
            {
                cout<<count<<" step(s) to exit"<<endl;
                break;
            }
            vis[a][b] = true;
            switch(ch)
            {
            case 'N':a-=1;count++;break;
            case 'S':a+=1;count++;break;
            case 'E':b+=1;count++;break;
            case 'W':b-=1;count++;break;
            }
        }
    }
    return 0;
}

你可能感兴趣的:(poj 1573)