算法学习之路|hdu 1035 Robot Motion(模拟)
题目大意 给一个地图,由ESWN(东南西北)组成,机器人根据脚下的指令移动,求如果机器人能走出地图,走的步数多少,如果不能走出,求每绕一圈的步数和绕圈之前走的步数。 不是图的题目,直接做就行。 代码: #include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> using namespace std; char map1[15][15]; int flag[15][15]; int main() { int n,m,k; int x,y; while(scanf("%d%d",&n,&m)&&n) { int sum1=0,sum2=0; memset(flag,0,sizeof(flag)); memset(map1,0,sizeof(map1)); scanf("%d",&k); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>map1[i][j]; } } x=1; y=k; while(x<=n&&x>=1&&y<=m&&y>=1) { if(map1[x][y]=='E') { flag[x][y]++; y++; sum2++; } else if(map1[x][y]=='W') { flag[x][y]++; y--; sum2++; } else if(map1[x][y]=='S') { flag[x][y]++; x++; sum2++; } else if(map1[x][y]=='N') { flag[x][y]++; x--; sum2++; } if(flag[x][y]==1) { sum1++; } else if(flag[x][y]>1) break; } if(sum1>0) printf("%d step(s) before a loop of %d step(s)\n",sum2-sum1*2,sum1); else printf("%d step(s) to exit\n",sum2); } return 0; }