5.24

dfs深度优先搜索:

  • 思想比较简单,就是一条路走到底,走到最深点处再回退一步,再看有没有路可以走,没有的话再回退一步,重复此步骤;

  • 也是人们常讲的暴搜。

主要的用法:

  • 通常需要一个状态数组来记录每次走路时侯的状态,如果走过就将他变成true,再走完之后,需要回头的情况就需要将其变成原来状态,如false;

  •             state[i] = true;//修改状态
    dfs(u + 1);//填下一层的位置
    state[i] = false;//回溯,返回上一层的状态
  • 重要的是dfs的顺序,从哪里开始,从哪一层开始;


例题:https://www.acwing.com/solution/content/30988/


  • 对输入的数进行全排列:

  • #include "iostream"
    using namespcae std;
    const int N =10;
    int p[N];//用来记录所有结点的所有值;
    bool st[N]//记录状态;
    void dfs(int u){
    if(u==n){
    //如果到达了最下面的一层,也就是满足了所有值都试了一遍,那么就是输出的条件
    for(int i = 0;i<n;i++)cout<<p[i]<<" ";
    cout<<endl;
    }for(int i =1;i<=n;i++){
    //因为是对1~n的全排列,所以这里从i=1开始
    if(!st[i]){
    //如果当前位置的值是没有被尝试过的
    p[u]=i;
    //将p数组对应的位置,进行赋值,这里的u是指层数,
    st[i] =true;
    dfs(u+1);
    st[i] =false;
    }
    }
    }
    int main(){
    cin>>n;
    dfs(0);
    //意思就是从0位置处开始进行结点的遍历
    return 0;
    }

磊磊零基础打卡算法:day20 c++dfs树的深度优先遍历的更多相关文章

  1. 零基础学C#算法(零基础学算法——C#版)

    今天本人正在看算法方面的书.作为高中数学忘得差不多的渣渣,实在无力.无奈找了本书,c语言写的,哎.我就把其中代码翻译成C#版好了.此坑能否填平,看我耐性和网络支持条件吧.有生之年能看完的话我会把整个项 ...

  2. [PHP] 算法-邻接矩阵图的广度和深度优先遍历的PHP实现

    1.图的深度优先遍历类似前序遍历,图的广度优先类似树的层序遍历 2.将图进行变形,根据顶点和边的关系进行层次划分,使用队列来进行遍历 3.广度优先遍历的关键点是使用一个队列来把当前结点的所有下一级关联 ...

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

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

  4. 2018-02-03-PY3下经典数据集iris的机器学习算法举例-零基础

    ---layout: posttitle: 2018-02-03-PY3下经典数据集iris的机器学习算法举例-零基础key: 20180203tags: 机器学习 ML IRIS python3mo ...

  5. Android零基础入门第71节:CardView简单实现卡片式布局

    还记得我们一共学过了多少UI控件了吗?都掌握的怎么样啊. 安卓中一些常用控件学习得差不多了,今天再来学习一个新的控件CardView,在实际开发中也有非常高的地位. 一.CardView简介 Card ...

  6. 【零基础学习iOS开发】【转载】

    原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...

  7. 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇

    从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...

  8. 【零基础学习iOS开发】【01-前言】01-开篇

    本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开发 四.学习iOS开发的目的 五.学习iOS开发的前提 从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过I ...

  9. 零基础一年拿下BAT三家offer

    背景 1.本人本科一本双非垫底的那种,硕士211.本硕电子通信,完全0基础,转行一年. 2.研一上第一学期上课+外派到老师合作公司写MATLAB.去年4月开始学习Java. 起步 1.实话说,刚决定转 ...

  10. 【雕爷学编程】MicroPython动手做(07)——零基础学MaixPy之机器视觉

    机器视觉 machine vision机器视觉是人工智能正在快速发展的一个分支.机器视觉作为生产过程中关键技术之一,在机器或者生产线上,机器视觉可以检测产品质量以便将不合格的产品剔除,或者指导机器人完 ...

随机推荐

  1. Docker 详解

    1.docker 基础 https://blog.csdn.net/huangjhai/article/details/118854733 2.docker进阶 https://blog.csdn.n ...

  2. rest-assured:JUnit5中接口测试参数化的支持之利用EnumSource检查用户消息是否包含特定字段(JSON path $ doesn't match.)

    代码:package ghcdgj.restful.framework;import static org.junit.jupiter.api.Assertions.*;import static i ...

  3. 1326. 灌溉花园的最少水龙头数目 (Hard)

    问题描述 1326. 灌溉花园的最少水龙头数目 (Hard) 在 x 轴上有一个一维的花园.花园长度为 n,从点 0 开始,到点 n 结束. 花园里总共有 n + 1 个水龙头,分别位于 [0, 1, ...

  4. Docker-Compose实战<下篇>

    本文是在上一篇文章的基础上做的一些内容追加,上文最后截止内容是docker-compose build将镜像生成完成.接下来我将继续写启动相关服务,访问服务以及常用命令使用等. 1 启动镜像 使用命令 ...

  5. VEU开发之element-ui中关闭dialog时并销毁

    el-dialog正常使用过程中,经常会发现一些问题,就是dialog加载的组件,每次打开都会有上次的内容,其实是加载到节点未被删除,只是反复隐藏/显示. <el-button type=&qu ...

  6. java中的批量导入,批量更新数据

    批量插入 数据,提高效率 Dao层 int insertBatch(List<HealthImport> list); xml文件 <insert id="insertBa ...

  7. python的global用法

    在python中,我们在函数外定义了一个变量,如果我们想在函数内对这个变量进行操作,就需要在函数内部将这个变量声明为global. 例1 x = 1 def func(): x = 2 func() ...

  8. Java基础之变量与常量

    变量 定义:可以变化的量. Java是一种强类型语言,每个变量都必须声明其类型. Java变量是程序种最基本的存储单元,其要素包括变量名,变量类型和作用域. //数据类型 变量名 = 值:可以使用逗号 ...

  9. 记一次SpringBoot整合Redis的Bug

    SpringBoot整合Redis遇见的坑 <!--Redis配置开始--> <dependency> <groupId>org.springframework.b ...

  10. 在项目中配置proxy 解决调试过程中的跨域问题