当前位置:   article > 正文

第十届蓝桥杯--迷宫_第十届蓝桥杯迷宫

第十届蓝桥杯迷宫

第十届蓝桥杯 ——迷宫_六级不考550+不改名-CSDN博客icon-default.png?t=M1L8https://blog.csdn.net/weixin_46239370/article/details/105763944代码:

  1. #include <iostream>
  2. #include <cstring>
  3. #include <queue>
  4. using namespace std;
  5. typedef pair<int, int> PII;
  6. char g[30][50];
  7. int dist[30][50];
  8. char dir[] = {'D', 'L', 'R', 'U'};
  9. int dx[] = {1, 0, 0, -1}, dy[] = {0, -1, 1, 0};
  10. void bfs()
  11. {
  12. memset(dist, -1, sizeof dist);
  13. queue<PII> q;
  14. q.push({29, 49});
  15. dist[29][49] = 0;
  16. while(q.size())
  17. {
  18. PII t = q.front();
  19. q.pop();
  20. for (int i = 0; i < 4; i ++)
  21. {
  22. int a = t.first + dx[i], b = t.second + dy[i];
  23. if(a < 0 || a >= 30 || b < 0 || b >= 50) continue;
  24. if(g[a][b] == '1' || dist[a][b] != -1) continue;
  25. q.push({a, b});
  26. dist[a][b] = dist[t.first][t.second] + 1;
  27. }
  28. }
  29. }
  30. int main()
  31. {
  32. for (int i = 0; i < 30; i ++) cin >> g[i];
  33. bfs();
  34. string ans;
  35. int x = 0, y = 0;
  36. while(x != 29 || y != 49)
  37. {
  38. for (int i = 0; i < 4; i ++)
  39. {
  40. int a = x + dx[i], b = y + dy[i];
  41. if(a < 0 || a >= 30 || b < 0 || b >= 50) continue;
  42. if(g[a][b] == '1') continue;
  43. if(dist[x][y] == dist[a][b] + 1)
  44. {
  45. ans += dir[i];
  46. x = a, y = b;
  47. break;
  48. }
  49. }
  50. }
  51. cout << ans << endl;
  52. return 0;
  53. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/390010
推荐阅读
相关标签
  

闽ICP备14008679号