POJ 1573机器人走迷宫
注意初始位置的初始化,如果标为0的话,循环从初始位置开始时move会多1.
#include<stdio.h> #include<string.h> int main() { int a,b,n; while(scanf("%d%d%d",&a,&b,&n),a||b||n) { int map[15][15],step[15][15]; memset(map,0,sizeof(map)); memset(step,0,sizeof(step)); for(int i=1;i<=a;i++) { getchar(); for(int j=1;j<=b;j++) scanf("%c",&map[i][j]); } int y=1,x=n,cnt=1,loop=0; step[y][x]=cnt; while(y&&x&&y<=a&&x<=b) { cnt++; switch(map[y][x]) { case 'N': y--;break; case 'W': x--;break; case 'S': y++;break; case 'E': x++;break; } if(step[y][x]) { loop=cnt-step[y][x]; break; } step[y][x]=cnt; } if(!loop) printf("%d step(s) to exit\n",cnt-1); else printf("%d step(s) before a loop of %d step(s)\n",cnt-loop-1,loop); } return 0; }