hdu 1035 Robot Motion

来源:互联网 发布:数学试卷编辑软件 编辑:程序博客网 时间:2024/06/06 00:33

        hdu 1035 Robot Motion

        深搜。

#include <stdio.h>#include <string.h>#define MAX_N 11char map[MAX_N][MAX_N];int visited[MAX_N][MAX_N];int n, m;int sx, sy;int step, loopStep;bool dfs(int x, int y, int* s) {if (x < 1 || x > n || y < 1 || y > m) {return false;}else if (visited[x][y] != -1) {loopStep = visited[x][y];return  true;}visited[x][y] = (*s)++;if (map[x][y] == 'N') {return dfs(x -1, y, s);} else if (map[x][y] == 'S') {return dfs(x + 1, y, s);} else if (map[x][y] == 'W') {return dfs(x, y - 1, s);} else if (map[x][y] == 'E') {return dfs(x, y + 1, s);}return false;}int main() {int i, j;while (scanf("%d%d", &n, &m) != EOF && n || m) {scanf("%d", &sy);for (i = 1; i <= n; i++) {scanf("%s", map[i] + 1);}sx = 1;loopStep = step = 0;memset(visited, -1, sizeof(visited));if (dfs(sx, sy, &step)) {printf("%d step(s) before a loop of %d step(s)\n", loopStep, step - loopStep); } else {printf("%d step(s) to exit\n", step);}}return 0;}