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. eggjs 在vscode调试

    https://eggjs.org/zh-cn/core/development.html?spm=ata.13261165.0.0.3c2f2be9w2ozd8#%E4%BD%BF%E7%94%A8 ...

  2. win10事件查看器出现10016错误的解决办法

    该错误一般会重复出现在事件查看器,严重的会导致系统卡死. 以解决下列错误为例,给出步骤: 注意记录用户(划掉的部分)及要添加的权限(本例为"本地激活"权限) 1.运行regedit ...

  3. python装饰器中高级用法(函数加参)

    在上一章我们说到装饰器的原则和基本用法,下面来补充一下:如果函数加参,装饰器该如何变化 1,还是用上一章的源代码 2,给test2加个参数name 报错了,本来给test2加一个name参数,为了实现 ...

  4. 嵌入式Qt中实现串口读取的事件驱动方法

    在嵌入式Linux系统的UI设计中,比较常见的是使用Qt库来实现.而在Qt中进行程序设计时,也经常会用到串口(UART)通信.现在基于Qt5.1以上的版本中,集成有串口模块(如QSerialPort) ...

  5. ResponseUtil 请求返回

    package com.infosec.sso.common; import java.io.IOException; import java.util.HashMap; import java.ut ...

  6. 3d-force-graph使用及相关设置

    首先安装3d-force-graph模块到项目依赖: npm install 3d-force-graph 在需要使用的vue页面中导入 import ForceGraph3D from '3d-fo ...

  7. vue 中 watch 和 watchEffect 区别

    vue 中 watch 和 watchEffect 区别 * watch 需要先指明需要侦听的数据源,watchEffect 不需要,只要传入的函数带有依赖就会自动追踪. * watchEffect ...

  8. idea设置类,方法模板 阿里检测

    一.设置IDEA 中的类注释模板File -> Settings -> Editor -> File and Code Templates -> Files /** * @Cl ...

  9. 关于elementui 面包屑设置

    后台管理面包屑 新建组件 <template> <el-breadcrumb separator-class="el-icon-arrow-right"> ...

  10. nacos2.1 新增配置发布失败。请检查参数是否正确

    使用官方的docker部署方式,部署了一个单节点nacos server,部署完了后发布配置信息,报错"新增配置发布失败.请检查参数是否正确" 解决方法: 在nacos mysql ...