Robot Motion
- 题目链接
- Robot Motion
- 题目大意
给你一张地图,每个格子写了一个字母,代表这个机器人在这一步应该向上下左右哪一步走,问这个机器人会从哪个格子出去,或者会在几步后陷入一个循环。
- 题解
直接模拟就好
- 代码
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
char s[15][15];
bool flag[15][15];
int n,m,k,way[15][15];
void solve(int x,int y)
{
int step=0;
while (x>=0 && x<n && y>=0 && y<m)
{
if (!flag[x][y])
{
flag[x][y]=1;
way[x][y]=step++;
}
else
{
printf("%d step(s) before a loop of %d step(s)\n",way[x][y],step-way[x][y]);
return ;
}
if (s[x][y]=='N') x--;
else if (s[x][y]=='S') x++;
else if (s[x][y]=='E') y++;
else if (s[x][y]=='W') y--;
}
printf("%d step(s) to exit\n",step);
return ;
}
int main()
{
while (scanf("%d%d",&n,&m),n!=0||m!=0)
{
scanf("%d",&k);
memset(s,0,sizeof(s));
memset(flag,0,sizeof(flag));
memset(way,0,sizeof(way));
for (int i=0;i<n;i++) scanf("%s",s[i]);
solve(0,k-1);
}
return 0;
}