//纯模拟 #include<iostream> #include<cstring> using namespace std; struct node { char direction; int step; }; node map[11][11]; int main() { int row,column,enter,step,i,j,v[11][11],x,y; while(scanf("%d%d%d",&row,&column,&enter)&&(row!=0||column!=0||enter!=0)) { memset(v,0,sizeof(v)); getchar(); for(i=1;i<=row;i++) { for(j=1;j<=column;j++) scanf("%c",&map[i][j].direction); getchar(); } x=1; y=enter; step=0; while(0<x&&x<=row&&0<y&&y<=column&&v[x][y]==0) { v[x][y]=1; step++; map[x][y].step=step; if(map[x][y].direction==‘E‘) y++; else if(map[x][y].direction==‘S‘) x++; else if(map[x][y].direction==‘W‘) y--; else x--; } if(x<=0||y<=0||x>row||y>column) printf("%d step(s) to exit\n",step); else printf("%d step(s) before a loop of %d step(s)\n",map[x][y].step-1,step-map[x][y].step+1); } }
原文地址:http://blog.csdn.net/stl112514/article/details/26279741