HDU1035 - Robot Motion (模拟)

来源:互联网 发布:行知社会实践园游后感 编辑:程序博客网 时间:2024/06/12 01:25

题目链接

  • 思路
  • 代码

思路


类似于走迷宫这样基本的搜索题,不过每一格的方向都已经固定,所以直接模拟一遍就可以了。

代码

#include <iostream>#include <cstring>using namespace std;const int maxn = 20;int count[maxn][maxn];int n, m, k;char dir[maxn][maxn];void dfs(int curx, int cury){    int nCount = 0;    memset(count, -1, sizeof(count));    while(true)    {        if(curx>n || cury>m || !curx || !cury)        {            printf("%d step(s) to exit\n", nCount);            return;        }        if(count[curx][cury]>=0)        {            printf("%d step(s) before a loop of %d step(s)\n", count[curx][cury], nCount-count[curx][cury]);            return;        }        count[curx][cury] = nCount;        if(dir[curx][cury]=='N') curx--;        else if(dir[curx][cury]=='S') curx++;        else if(dir[curx][cury]=='W') cury--;        else if(dir[curx][cury]=='E') cury++;        nCount++;    }}int main(){    while(scanf("%d%d", &n, &m)&&n)    {        scanf("%d", &k);        for(int i=1; i<=n; i++)                scanf("%s", dir[i]+1);        dfs(1, k);    }    return 0;}
0 0