【HDU】 1035 Robot Motion

来源:互联网 发布:电脑扫描仪软件 编辑:程序博客网 时间:2024/06/03 04:57

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;}
0 0
原创粉丝点击