磊磊零基础打卡算法:day20 c++dfs树的深度优先遍历
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树的深度优先遍历的更多相关文章
- 零基础学C#算法(零基础学算法——C#版)
今天本人正在看算法方面的书.作为高中数学忘得差不多的渣渣,实在无力.无奈找了本书,c语言写的,哎.我就把其中代码翻译成C#版好了.此坑能否填平,看我耐性和网络支持条件吧.有生之年能看完的话我会把整个项 ...
- [PHP] 算法-邻接矩阵图的广度和深度优先遍历的PHP实现
1.图的深度优先遍历类似前序遍历,图的广度优先类似树的层序遍历 2.将图进行变形,根据顶点和边的关系进行层次划分,使用队列来进行遍历 3.广度优先遍历的关键点是使用一个队列来把当前结点的所有下一级关联 ...
- 图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)
参考网址:图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS) - 51CTO.COM 深度优先遍历(Depth First Search, 简称 DFS) 与广度优先遍历(Breath ...
- 2018-02-03-PY3下经典数据集iris的机器学习算法举例-零基础
---layout: posttitle: 2018-02-03-PY3下经典数据集iris的机器学习算法举例-零基础key: 20180203tags: 机器学习 ML IRIS python3mo ...
- Android零基础入门第71节:CardView简单实现卡片式布局
还记得我们一共学过了多少UI控件了吗?都掌握的怎么样啊. 安卓中一些常用控件学习得差不多了,今天再来学习一个新的控件CardView,在实际开发中也有非常高的地位. 一.CardView简介 Card ...
- 【零基础学习iOS开发】【转载】
原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...
- 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇
从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...
- 【零基础学习iOS开发】【01-前言】01-开篇
本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开发 四.学习iOS开发的目的 五.学习iOS开发的前提 从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过I ...
- 零基础一年拿下BAT三家offer
背景 1.本人本科一本双非垫底的那种,硕士211.本硕电子通信,完全0基础,转行一年. 2.研一上第一学期上课+外派到老师合作公司写MATLAB.去年4月开始学习Java. 起步 1.实话说,刚决定转 ...
- 【雕爷学编程】MicroPython动手做(07)——零基础学MaixPy之机器视觉
机器视觉 machine vision机器视觉是人工智能正在快速发展的一个分支.机器视觉作为生产过程中关键技术之一,在机器或者生产线上,机器视觉可以检测产品质量以便将不合格的产品剔除,或者指导机器人完 ...
随机推荐
- PowerShell学习笔记二_变量、Select、Foreach、where、自动变量
变量声明/定义变量使用$作为前缀,例如:$A.$var等.定义一:$mysqlservice=Get-Service -Name mysql ,获取mysql服务对象获取所有服务$services=G ...
- mybatis-关联查询3-自关联查询
一对多的方式处理 查询指定栏目的所有子孙栏目 查询指定栏目及其所有子孙栏目 多对 一的方式处理
- span服务器控件
Label Button 这些控件在服务器端都有对应的类可以去实例化一个对象, 可是像 span 这些在服务器没有对应的类可实例的, 在服务器端要实例化一个 span 控件时怎么办呢? 可以使用 Ht ...
- ubuntu 铺满桌面 调整字体 安装firefox中文版
ubuntu 铺满桌面 安装 open-vm-tools sudo apt-get install open-vm-tools sudo apt-get install open-vm* . rebo ...
- 删除v-for方法生成的组件的方法
一.思路 在vue:data中的数据对象添加布尔类型的属性,用来表明其是否被渲染,如果需要删除组件,就把这个属性设置为false: 在计算属性vue:computed中,根据该布尔属性过滤,生成一个新 ...
- ORACLE 配置ST_GEOMETRY以支持SQL方式操作SDE数据库
这里假设已经在ORACLE里边创建了SDE数据库,在此基础上进行配置: 1.以sde用户登录到oracle,运行一下语句: SELECT * FROM USER_LIBRARIES; CREATE O ...
- NOIP2022 游记
无论结局如何,我都曾经来过. Day -1 zak 模拟赛,被殴打了. Day 0 上午 补模拟赛题. 下午 补模拟赛题. 徐老师过来分配了第二天下午造数据名单. 我造 T2.希望不会太难.(flag ...
- PHPStudy设置局域网访问
PHPStudy是一款轻量级PHP服务器,搭建环境迅速.但是与XAMPP之类服务器不同的是,PHPStudy默认只有本机才能设置域名.访问网站.需要更改vhost.conf中的文件,才可以使得内网可以 ...
- 在C++创建动态数组
计算首行两数相加 #include <iostream>11 #include <vector> using namespace std; int main() { vecto ...
- TS语法中interface和class的理解
在TS中interface和后端语言如c#中的概念是不一样的,在TS中interface相当于定义了一种类型,是设置自定义类型的方式,区分与基础类型(number.string等),当定义变量时,就可 ...