#include<iostream>
#include <fstream>
#define MAX_ 15
//#define N 0
//#define S 1
//#define E 2
//#define W 3
char gird[MAX_][MAX_];
unsigned int is_vis[MAX_][MAX_];
int n,m,st;
int pos_x,pos_y;
bool flag;
bool cir_flag;
int step;
int cir_step;
int main()
{
//std::ifstream fin("1.txt");
while (std::cin>>n>>m>>st&&n&&m&&st){
for(int i=0;i!=n;i++){
for(int j=0;j!=m;j++){
std::cin>>gird[i][j];
}
}
is_vis[0][st-1]=1;
step=1;
pos_x=0; pos_y=st-1;
flag=false;cir_flag=false;
while (!flag&&!cir_flag){
switch (gird[pos_x][pos_y]){
case 'N':
if((--pos_x)<0){
flag=true;
}
break;
case 'S':
if((++pos_x)>n-1){
flag=true;
}
break;
case 'E':
if((++pos_y)>m-1){
flag=true;
}
break;
case 'W':
if((--pos_y)<0){
flag=true;
}
break;
default:
break;
}
step++;
if(flag!=true){
if(is_vis[pos_x][pos_y]!=0){
cir_flag=true;
cir_step=step-is_vis[pos_x][pos_y];
step=is_vis[pos_x][pos_y];
}
is_vis[pos_x][pos_y]=step;
}
}
if(flag==true){
std::cout<<--step<<" step(s) to exit"<<std::endl;
}else{
std::cout<<--step<<" step(s) before a loop of "<<cir_step<<" step(s)"<<std::endl;
}
memset(gird,0,sizeof(gird));
memset(is_vis,0,sizeof(is_vis));
}
}
HDU-1035Robot Motion
最新推荐文章于 2019-12-08 11:19:30 发布