#include<iostream>
#include<stdio.h>
#include<stack>
#include<string.h>
using namespace std;
#define MAXN 12
int state[MAXN][MAXN];
int record[MAXN][MAXN];
int x[]={-1,0,1,0};
int y[]={0,1,0,-1};
int main(){
int row,column,pos;
char s[MAXN];
int a,b;
while(cin>>row>>column>>pos,row&&column&&pos){
memset(state,0,sizeof(state));
for(a=1;a<=row;a++){
cin>>s;
for(b=0;b<column;b++){
switch(s[b]){
case 'N':record[a][b+1]=0;break;
case 'E':record[a][b+1]=1;break;
case 'S':record[a][b+1]=2;break;
case 'W':record[a][b+1]=3;break;
}
}
}
int sx,sy;
sx=1;sy=pos;
int step=1;
while(1){
state[sx][sy]=step;
step++;
int d=record[sx][sy];
sx+=x[d];
sy+=y[d];
if(sx==0||sx==row+1||sy==0||sy==column+1){ //10 step(s) to exit
cout<<step-1<<" step(s) to exit"<<endl;
break;
}
if(state[sx][sy]){ //3 step(s) before a loop of 8 step(s)
cout<<state[sx][sy]-1<<" step(s) before a loop of "<<step-state[sx][sy]<<" step(s)"<<endl;
break;
}
}
}
return 0;
}
Robot Motion POJ 1573
最新推荐文章于 2024-05-09 17:12:01 发布