Asteroids! hdu 1240

一时失言乱红尘 2021-11-02 14:32 221阅读 0赞

三维空间的简单BFS….

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <queue>
  5. #include <iostream>
  6. using namespace std;
  7. char map[20][20][20];
  8. int N, a, b, c, d, e, f, f1;
  9. int xx[ ] = {
  10. 0, 1, 0, -1, 0, 0};
  11. int yy[ ] = {
  12. 1, 0, -1, 0, 0, 0};
  13. int zz[ ] = {
  14. 0, 0, 0, 0 , 1, -1};
  15. struct node
  16. {
  17. int x, y, z, t;
  18. }Nd;
  19. int judge( int x, int y, int z)
  20. {
  21. if ( x < 0 || x >= N || y < 0 || y >= N || z <0 || z >= N)
  22. return 0;
  23. return 1;
  24. }
  25. void BFS( )
  26. {
  27. int i, j, x1, x2, z1, y1, y2, z2, t1,t2;
  28. Nd.x = a, Nd.y = b, Nd.z = c, Nd.t = 0;
  29. queue<node>q;
  30. q.push(Nd);
  31. f1 = 0;
  32. while (!q.empty( ))
  33. {
  34. Nd = q.front( );
  35. q.pop( );
  36. x1 = Nd.x, y1 = Nd.y, z1 = Nd.z, t1 = Nd.t;
  37. if (x1 == d && y1 == e && z1 == f)
  38. {
  39. f1 = 1;
  40. printf("%d %d\n",N, t1);
  41. break;
  42. }
  43. //printf("%d\n",N);
  44. for (i = 0; i < 6; i++)
  45. {
  46. x2 = x1 + xx[i];
  47. y2 = y1 + yy[i];
  48. z2 = z1 + zz[i];
  49. //printf("(%d,%d,%d)-> %c %d \n",x2, y2, z2, map[x2][y2][z2], judge(x2, y2, z2));
  50. if ( judge(x2, y2, z2) && map[x2][y2][z2] != 'X' )
  51. {
  52. map[x2][y2][z2] = 'X';
  53. Nd.x = x2, Nd.y = y2, Nd.z = z2, Nd.t = t1 + 1;
  54. // printf("into:%d %d %d\n",x2, y2, z2);
  55. q.push(Nd);
  56. }
  57. }
  58. }
  59. }
  60. int main( )
  61. {
  62. char ch[10];
  63. int i, j, z;
  64. while (scanf("%s%d",ch, &N) != EOF)
  65. {
  66. for (z = 0; z < N; z++)
  67. for (i = 0; i < N; i++)
  68. for(j = 0; j < N; j++)
  69. cin>>map[i][j][z];
  70. scanf("%d%d%d",&a, &b, &c);
  71. scanf("%d%d%d",&d, &e, &f);
  72. scanf("%s",ch);
  73. BFS( );
  74. if (!f1)
  75. puts("NO ROUTE");
  76. }
  77. return 0;
  78. }

转载于:https://www.cnblogs.com/tangcong/archive/2011/08/09/2132674.html

发表评论

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

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

相关阅读

    相关 HDU 1240(bfs)

    题意:给出一个三维空间,宇宙飞船的起始地点,目标地点,求最短飞行距离。   include <iostream> include <str