1. #include <iostream>
  2.  
  3. /*
  4. 5 4
  5. 0 0 1 0
  6. 0 0 0 0
  7. 0 0 1 0
  8. 0 1 0 0
  9. 0 0 0 1
  10. 0 0 4 1
  11.  
  12. Total: 9 7 5
  13. Min: 5
  14. --------------------------------
  15. Process exited with return value 0
  16. Press any key to continue . . .
  17. */
  18.  
  19. using namespace std;
  20.  
  21. int n, m;
  22. int minnum = 9999999;
  23. int endy1 = 0, endy2 = 0;
  24. int maze[20][20] = {0}, book[20][20] = {0};
  25. int direction[4][2] = { {0, 1}, {1, 0}, {0, -1}, {-1, 0} };
  26.  
  27. void DFS(int x, int y, int step)
  28. {
  29. if(x == endy1 && y == endy2)
  30. {
  31. if(step < minnum)
  32. {
  33. minnum = step;
  34. cout << minnum << " ";
  35. }
  36.  
  37. return;
  38. }
  39.  
  40. for(int i = 0; i <= 3; i++)
  41. {
  42. int tx = x + direction[i][0];
  43. int ty = y + direction[i][1];
  44.  
  45. if(tx < 0 || tx > n - 1 || ty < 0 || ty > m - 1)
  46. {
  47. continue;
  48. }
  49.  
  50. if(maze[tx][ty] == 0 && book[tx][ty] == 0)
  51. {
  52. book[tx][ty] = 1;
  53. DFS(tx, ty, step + 1);
  54. book[tx][ty] = 0;//尝试结束,取消这个点的标记
  55. }
  56. }
  57.  
  58. return;
  59. }
  60.  
  61. int main()
  62. {
  63. cin >> n >> m;
  64.  
  65. for(int i = 0; i < n; i++)
  66. {
  67. for(int j = 0; j < m; j++)
  68. {
  69. cin >> maze[i][j];
  70. }
  71. }
  72.  
  73. int beginx1, beginx2;
  74. cin >> beginx1 >> beginx2 >> endy1 >> endy2;
  75.  
  76. cout << endl << "Total: ";
  77. DFS(beginx1, beginx2, 0);
  78.  
  79. cout << endl << "Min: " << minnum;
  80.  
  81. return 0;
  82. }

  

DFS-深度优先遍历的更多相关文章

  1. (原创)不过如此的 DFS 深度优先遍历

    DFS 深度优先遍历 DFS算法用于遍历图结构,旨在遍历每一个结点,顾名思义,这种方法把遍历的重点放在深度上,什么意思呢?就是在访问过的结点做标记的前提下,一条路走到天黑,我们都知道当每一个结点都有很 ...

  2. 图的深度优先遍历DFS

    图的深度优先遍历是树的前序遍历的应用,其实就是一个递归的过程,我们人为的规定一种条件,或者说一种继续遍历下去的判断条件,只要满足我们定义的这种条件,我们就遍历下去,当然,走过的节点必须记录下来,当条件 ...

  3. 图的深度优先遍历(DFS)—递归算法

    实验环境:win10, DEV C++5.11 实验要求: 实现图的深度优先遍历 实验代码: #include <iostream> #define maxSize 255 #includ ...

  4. 图的深度优先遍历(DFS)和广度优先遍历(BFS)

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  5. 广度优先遍历-BFS、深度优先遍历-DFS

    广度优先遍历-BFS 广度优先遍历类似与二叉树的层序遍历算法,它的基本思想是:首先访问起始顶点v,接着由v出发,依次访问v的各个未访问的顶点w1 w2 w3....wn,然后再依次访问w1 w2 w3 ...

  6. 深度优先遍历DFS

    深度优先遍历,这个跟树中的遍历类似,做深度遍历就是访问一个节点之后,在访问这个节点的子节点,依次下去是一个递归的过程. 具体代码: void DFS(MGraph g ,int i) {     in ...

  7. 采用邻接矩阵表示图的深度优先搜索遍历(与深度优先搜索遍历连通图的递归算法仅仅是DFS的遍历方式变了)

    //采用邻接矩阵表示图的深度优先搜索遍历(与深度优先搜索遍历连通图的递归算法仅仅是DFS的遍历方式变了) #include <iostream> using namespace std; ...

  8. 图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)

    参考网址:图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS) - 51CTO.COM 深度优先遍历(Depth First Search, 简称 DFS) 与广度优先遍历(Breath ...

  9. 图的深度优先遍历(DFS) c++ 非递归实现

    深搜算法对于程序员来讲是必会的基础,不仅要会,更要熟练.ACM竞赛中,深搜也牢牢占据着很重要的一部分.本文用显式栈(非递归)实现了图的深度优先遍历,希望大家可以相互学习. 栈实现的基本思路是将一个节点 ...

  10. 【图的遍历】广度优先遍历(DFS)、深度优先遍历(BFS)及其应用

    无向图满足约束条件的路径 •[目的]:掌握深度优先遍历算法在求解图路径搜索问题的应用 [内容]:编写一个程序,设计相关算法,从无向图G中找出满足如下条件的所有路径:  (1)给定起点u和终点v.  ( ...

随机推荐

  1. 64位matlab中libsvm的安装

    因为windows版的matlab对编译器的识别不好.所以直接在网上下了已经编译好的libsvm文件放入toolbox文件夹就可以用libsvm了 libsvm已编译好的文件下载地址: 猛戳我下载 1 ...

  2. ACM会议列表与介绍(2014/05/06)

    Conferences ACM SEACM Southeast Regional Conference ACM Southeast Regional Conference the oldest, co ...

  3. collections集合的总括。

    序言 突然遇到集合的有关面试题,感觉很懵逼,所以特意总结了一下,关于我们常用的 ArrayList.LinkedList.Set等集合的一些区别和用法. 还有,这份微小型总结肯定是从很多博文中摘取精华 ...

  4. 随便浏览感觉简单易用的Orm

    https://www.cnblogs.com/babietongtianta/p/4365195.html CYQ ITDOS CHOLE.ORM

  5. 菜鸟调错(二)——EJB3.0部署消息驱动Bean抛javax.naming.NameNotFoundException异常

    在部署EJB的消息驱动Bean时遇到了如下的错误: ERROR [org.jboss.resource.adapter.jms.inflow.JmsActivation] (WorkManager(2 ...

  6. hot-warm-architecture-in-elasticsearch-5-x

    https://www.elastic.co/blog/hot-warm-architecture-in-elasticsearch-5-x https://www.elastic.co/blog/e ...

  7. ES6,新增数据结构Set的用法

    ES6 提供了新的数据结构 Set. 特性 似于数组,但它的一大特性就是所有元素都是唯一的,没有重复. 我们可以利用这一唯一特性进行数组的去重工作. 单一数组的去重. let set6 = new S ...

  8. profile bashrc bash_profile 之间的区别和联系

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置. /etc/bashrc:为每一个 ...

  9. 【硅谷问道】 WWDC 17: 开发者的最初观感

    [硅谷问道] WWDC 17: 开发者的最初观感 前言 每年的 WWDC 都是 iOS 开发者集体高潮的时刻.第一天的 WWDC 带来了全新的 iOS 11.MacOS.tvOS 和 watchOS, ...

  10. VS2015打开项目慢、死机和卡顿解决方案

    VS2015功能强大,但是经常慢 网上有解决方案如下几个,留着备用: 1.选项-环境-基于客户端性能自动调整视觉体验,去掉选项. 2.选项-源代码管理-插件选无. 3.选项-文本编辑器-所有语言-滚动 ...