POJ 1573 Robot Motion

迷南。 2022-10-16 14:25 119阅读 0赞
  1. #include <iostream>
  2. #include <queue>
  3. #include <vector>
  4. #include <algorithm>
  5. #include <stack>
  6. using namespace std;
  7. #define debug(x) cout<<#x<<": "<<(x)<<endl;
  8. #pragma warning(disable:4996)
  9. int dx[4] = { -1,0, 1, 0};
  10. int dy[4] = { 0, 1, 0,-1};
  11. bool help(int n, int m, int col) {
  12. //N 0 E 1 S 2 W 3
  13. vector<vector<int>> a(n,vector<int>(m,-1));
  14. vector<vector<int>> v(n,vector<int>(m,-1));
  15. for (size_t i = 0; i < n; ++i) {
  16. for (size_t j = 0; j < m; ++j) {
  17. char c;
  18. cin >> c;
  19. switch (c)
  20. {
  21. case 'N':a[i][j] = 0; break;
  22. case 'E':a[i][j] = 1; break;
  23. case 'S':a[i][j] = 2; break;
  24. case 'W':a[i][j] = 3; break;
  25. default:
  26. break;
  27. }
  28. }
  29. }
  30. int x = 0;
  31. int y = col - 1;
  32. int cnt = 0;
  33. bool out = true;
  34. while (x >= 0 && x < n && y >= 0 && y < m) {
  35. int d = a[x][y];
  36. if (v[x][y] >= 0) {
  37. cout << v[x][y] << " step(s) before a loop of "<< cnt-v[x][y] << " step(s)" << endl;
  38. out = false;
  39. break;
  40. }
  41. v[x][y] = cnt;
  42. x += dx[d], y += dy[d];
  43. cnt++;
  44. }
  45. if (out) {
  46. cout << cnt << " step(s) to exit" << endl;
  47. }
  48. return true;
  49. }
  50. int main()
  51. {
  52. int n, m, col;
  53. //freopen("../in1.txt","r",stdin);
  54. while (cin >> n >> m >> col) {
  55. if (n == 0 && m==0 && col==0) {
  56. break;
  57. }
  58. help(n,m,col);
  59. }
  60. return 0;
  61. }

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,119人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Robot Motion

    链接:http://poj.org/problem?id=1573 Problem Description: 机器人已经被编程以遵循其路径中的指示。机器人要移动的下一个方向