题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=58

就是一道简单的BFS 练习练习搜索,一次AC

  1. #include <iostream>
  2. #include <vector>
  3. #include <cstring>
  4. #include <cstdio>
  5.  
  6. using namespace std;
  7.  
  8. int a[9][9] = { 1,1,1,1,1,1,1,1,1,
  9. 1,0,0,1,0,0,1,0,1,
  10. 1,0,0,1,1,0,0,0,1,
  11. 1,0,1,0,1,1,0,1,1,
  12. 1,0,0,0,0,1,0,0,1,
  13. 1,1,0,1,0,1,0,0,1,
  14. 1,1,0,1,0,1,0,0,1,
  15. 1,1,0,1,0,0,0,0,1,
  16. 1,1,1,1,1,1,1,1,1
  17. };
  18. bool bool_judge[9][9];
  19. typedef struct point
  20. {
  21. int x,y,t;
  22. point()
  23. {
  24. x = -1; y = -1; t = -1;
  25. }
  26. }point;
  27.  
  28. vector<point>v;
  29. vector<point>::iterator p;
  30. point q;
  31.  
  32. void init()
  33. {
  34. memset(bool_judge,false,sizeof(bool_judge));
  35. /* for(int i = 0; i < 9; i++)
  36. {
  37. for(int j = 0; j < 9; j++)
  38. printf("%d ",a[i][j]);
  39. printf("\n");
  40. }*/
  41. }
  42. void add(point k,int t)
  43. {
  44. if(k.x-1 >= 0 && a[k.x - 1][k.y] == 0 && bool_judge[k.x - 1][k.y] == false)
  45. {
  46. q.x = k.x - 1,q.y = k.y,q.t = t;
  47. v.push_back(q);
  48. bool_judge[k.x - 1][k.y] = true;
  49. }
  50.  
  51. if(k.x + 1 <= 8 && a[k.x+1][k.y] == 0 && bool_judge[k.x+1][k.y] == false)
  52. {
  53. q.x = k.x + 1,q.y = k.y,q.t = t;
  54. v.push_back(q);
  55. bool_judge[k.x + 1][k.y] = true;
  56. }
  57.  
  58. if(k.y - 1 >= 0 && a[k.x][k.y - 1] == 0 && bool_judge[k.x][k.y - 1] == false)
  59. {
  60. q.x = k.x,q.y = k.y - 1,q.t = t;
  61. v.push_back(q);
  62. bool_judge[k.x][k.y - 1] = true;
  63. }
  64.  
  65. if(k.y + 1 <= 8 && a[k.x][k.y+1] == 0 && bool_judge[k.x][k.y + 1] == false)
  66. {
  67. q.x = k.x,q.y = k.y + 1,q.t = t;
  68. v.push_back(q);
  69. bool_judge[k.x][k.y + 1] = true;
  70. }
  71. }
  72.  
  73. int BFS(int x2,int y2)
  74. {
  75. while(v.empty() != true)
  76. {
  77. q = v[0];
  78. p = v.begin();
  79. v.erase(p);
  80. //printf("chu %d %d\n",q.x,q.y);
  81. if(q.x == x2 && q.y == y2)
  82. {
  83. return q.t;
  84. }
  85. add(q,++q.t);
  86. }
  87. return 0;
  88. }
  89. int main()
  90. {
  91. init();
  92. int n;
  93. scanf("%d",&n);
  94. int x1,y1,x2,y2;
  95. while(n--)
  96. {
  97. scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
  98. q.x = x1,q.y = y1,q.t = 0;
  99. v.push_back(q);
  100. bool_judge[x1][y1] = true;
  101. int sum = BFS(x2,y2);
  102. printf("%d\n",sum);
  103. v.clear();
  104. init();
  105. }
  106. return 0;
  107. }

ny 58 最少步数 (BFS)的更多相关文章

  1. NYOJ 58 最少步数

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  2. nyist 58 最小步数 BFS

    最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0 ...

  3. 最少步数(bfs)

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  4. POJ 3126 Prime Path【从一个素数变为另一个素数的最少步数/BFS】

    Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26475 Accepted: 14555 Descript ...

  5. 南阳理工 58 最少步数 (DFS)

    描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0, ...

  6. 最少步数(dfs + bfs +bfs优化)

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  7. 最少步数(bfs)

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  8. T1330 最少步数(#Ⅱ- 8)(广度优先搜索)

    [题目描述] 在各种棋中,棋子的走法总是一定的,如中国象棋中马走“日”.有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按“日”走,也能如象一样走“田”字.他的同桌平时喜欢下围棋, ...

  9. ACM 最少步数

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

随机推荐

  1. asp.net预览图片

    Aspx code <table> <tr> <td class="style3"> <asp:Label ID="Label1 ...

  2. js——事件

    焦点:使浏览器能够区分用户输入的对象,当一个元素有焦点的时候,那么他就可以接收用户的输入. 我们可以通过一些方式给元素设置焦点 1.点击 2.tab 3.js 不是所有元素都能够接收焦点的.能够响应用 ...

  3. 如何在Eclipse中开发并调试自己的插件(或者说如何将自己的代码插件化)

    Setting up Eclipse to create and debug plugins for ImageJ 最近在做一个关于卫星遥感全链路仿真的项目,由于项目是基于ImageJ开发,而Imag ...

  4. python two-dimensional array assignment initialize

    #if you want to initialize a 9*9 two-dimensional array [([""]*9) for i in range(9)] #cauti ...

  5. linux杂记(二)主机硬盘规划

    linux安装过程中,至少要两个partition,一个是[/],另一个是虚拟内存[swap].但比较不保险. 稍微麻烦点的方式: / /usr:linux操作系统 /home:使用者信息 /var: ...

  6. Android 6.0 以及HttpClient

    Android 6.0 SDK,API Level 是 23.更新之后,就可以修改 compileSdkVersion 和targetSdkVersion 到 23 体验新的特性了. 同时 Andro ...

  7. drawable 另外一种形式dimens.xml

    常见的Drawable,放置默认drawable一系列目录,有时候会发现drawable找不到的情况,其实还可以放另外一个目录下 values------->>dimens.xml < ...

  8. JS输出当前时间,且每秒变化

    <div id="timer"></div> <script type="text/javascript"> window. ...

  9. JS倒计时器一只,顺便复习javascript时间相关函数

    window.onload = function(){ var uS = 604800; //后台提供 : 秒 var day=hour=minute=second=0, timer; var dem ...

  10. codeforces 553D . Nudist Beach 二分

    题目链接 有趣的题. 给一个图, n个点m条边. 有k个点不可选择. 现在让你选出一个非空的点集, 使得点集中strength最小的点的strength最大. strength的定义:一个点周围的点中 ...