http://poj.org/problem?id=1573
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<cstring> 4 5 int main() 6 { 7 int step[15][15],n,m,x,y,s; 8 int visit[15][15]; 9 char map[15][15]; 10 while(scanf("%d%d%d",&n,&m,&y),n||m||y) 11 { 12 /*for(int i=1;i<=n;i++) 13 { 14 scanf("%s",map[i]+1); 15 }*/ 16 for(int i = 1 ; i <= n ; i ++) 17 { 18 getchar();//吃掉换行 19 for(int j = 1 ; j <= m ; j++) 20 { 21 scanf("%c",&map[i][j]) ; 22 } 23 } 24 memset(visit,0,sizeof(visit)); 25 s=0,x=1,visit[x][y]=1,step[x][y]=s; 26 while(1) 27 { 28 switch(map[x][y]) 29 { 30 case 'N': x--;break; 31 case 'S': x++;break; 32 case 'E': y++;break; 33 case 'W': y--;break; 34 } 35 s++; 36 if(visit[x][y]) 37 { 38 printf("%d step(s) before a loop of %d step(s) ",step[x][y], s-step[x][y]); 39 break; 40 } 41 visit[x][y]=1; 42 step[x][y]=s; 43 if(x<1 || y<1 || x>n || y>m) 44 { 45 printf("%d step(s) to exit ",s); 46 break; 47 } 48 } 49 } 50 return 0; 51 }
呜啦啦,又是模拟题,这个题又被虐了好长时间,不过倒是挺好做的感觉