深度优先搜索

原创 2018年04月16日 09:49:46

今天就把我所学的一种算法整理一下,加深一下理解

深度优先搜索(dfs)

先举个例子:今天早上起床洗漱,挑选今天要穿的衣服(第一步),去食堂吃早餐,吃什么好呢,得想想再决定(第二步),到达教室楼,又得寻找教室自习(第三步)······还有更多的行程就不再说了,看吧,每到一步就得进行一次选择,因为每一步都有不同的情况,那么一天的行程就有很多种情况。

深度优先搜索就是将所有可能的情况都例举出来,有点像枚举,但在某些时候比枚举更加的方便。

例如:衣服有红、蓝和绿三种颜色,早餐有,牛奶、面包和饼干三种,自习室有401、402和403三个教室。

第一步:穿红色衣服

第二步:喝牛奶

第三步:401

或者

第一步:穿红色衣服

第二步:喝牛奶

第三步:402

······

每一步做完,下一步就是一种扩展,探寻不同的情况;

以上的举得例子并不是很严谨,主要是为了加强理解,事实上每一步扩展的东西应该是相同的。

下面的这段代码就是dfs的基本模型

void dfs(int step)
{
    if(step == 边界) 
    {····return;}判断边界;
    扩展for(i=1;i<=n;i++)
    {
    dfs(step + 1);下一步
    }
    return;
} 

人工智能工程师直通车第一期

-
  • 1970年01月01日 08:00

深度优先搜索 深度优先搜索

  • 2010年06月26日 11:26
  • 15KB
  • 下载

图的深度优先搜索 递归和非递归实现 c++版本

本文参考了李春葆版本的数据结构上机指导,但是原版是c代码, 本文用了c++实现,并且修复了深度优先搜索非递归的一个bug。 graph.cpp文件: #include"graph.h" #includ...
  • suifeng50
  • suifeng50
  • 2014-06-18 16:50:28
  • 2194

用JAVA实现深度优先搜索

深度优先与广度优先搜索代码实现很相似,前者是利用了栈这种数据结构;而后者是利用了队列这种数据结构。下面看看代码是怎么实现的 /*****************************深度优先***...
  • u013679620
  • u013679620
  • 2015-01-13 17:14:37
  • 1131

深度优先搜索简单入门

将1-9填入 下面的 空格里,使得等式成立  [ ][ ][ ]+[ ][ ][ ]=[ ][ ][ ] #include int a[10],book[10],ans; void dfs(i...
  • VayaWu
  • VayaWu
  • 2016-07-27 09:19:22
  • 470

深度优先搜索实例

前面文章《深度优先搜索 》中介绍了深度优先搜索的相关知识,现在看一些实例,来加深理解运用。 以下问题中涉及到的树的结构如下 /**  * Definition for a binary tree n...
  • cumtwyc
  • cumtwyc
  • 2014-12-16 10:39:51
  • 1302

“生动”讲解——深度优先搜索与广度优先搜索

通过GIF图“生动”介绍深度优先搜索与广度优先搜索
  • a396901990
  • a396901990
  • 2015-04-21 00:25:44
  • 10128

深度优先搜索是什么?

深度优先搜索学习,有顺序哦!
  • AC_hell
  • AC_hell
  • 2016-03-14 12:49:32
  • 692

深度优先搜索和深度优先搜索的区别

一)深度优先搜索的特点是: (1)无论问题的内容和性质以及求解要求如何不同,它们的程序结构都是相同的,即都是深度优先算法(一)和深度优先算法(二)中描述的算法结构,不相同的仅仅是存储结点数据结构...
  • juanlansexuehua
  • juanlansexuehua
  • 2017-02-12 15:48:56
  • 318

深度优先搜索代码模板

void dfs(type input,type result,int step){ if(数据非法)return 0;//数据非法 if(step==input.size()){//...
  • xiang1431
  • xiang1431
  • 2015-04-19 15:56:44
  • 419
收藏助手
不良信息举报
您举报文章:深度优先搜索
举报原因:
原因补充:

(最多只允许输入30个字)