当前位置: 首页 > wzjs >正文

网站主机地址做数据收集网站

网站主机地址,做数据收集网站,自己做网站挂广告,wordpress免dfs和bfs的区别 dfs是可一个方向去搜,不到黄河不回头,直到遇到绝境了,搜不下去了,再换方向(换方向的过程就涉及到了回溯)。bfs是先把本节点所连接的所有节点遍历一遍,走到下一个节点的时候&…

dfs和bfs的区别

  • dfs是可一个方向去搜,不到黄河不回头,直到遇到绝境了,搜不下去了,再换方向(换方向的过程就涉及到了回溯)。
  • bfs是先把本节点所连接的所有节点遍历一遍,走到下一个节点的时候,再把连接节点的所有节点遍历一遍,搜索方向更像是广度,四面八方的搜索过程。

注意

dfs的过程图看随想录上面写的,注意几点:

  • 搜索方向,是认准一个方向搜,直到碰壁之后再换方向(碰壁是指程序运行到最后一层了,不能再往下走了。)
  • 换方向是撤销原路径,改为节点链接的下一个路径,回溯的过程(回溯是一次只回溯一步,比如第5层回溯到第4层,不可以直接从第5层回溯到第3层)。

回溯算法这一章节全部都都是dfs,就是用递归来实现的,递归的代码框架如下:

void dfs(参数) {if (终止条件) {存放结果;return;}for (选择:本节点所连接的其他节点) {处理节点;dfs(图,选择的节点); // 递归回溯,撤销处理结果}
}

下面用一个树的遍历来写一下dfs代码:

这里的dfs没有终止条件,是因为每一个节点我都需要收集。

/*
先通过两种形式构建树
1、边的形式
2、father数组
再使用dfs遍历这棵树,打印所有节点。
*/#include <bits/stdc++.h>
using namespace std;// 先定义一个邻接表数组,长度为100000,每一个元素都是vector<int>
vector<int> adjlist[100005];// 存储前序遍历的结果
vector<int> result;// 向下递归需要的参数是根节点及其父亲节点
void dfs(int node, int parent)
{result.push_back(node);// 从当前节点node往它的子节点开始递归for (auto &child : adjlist[node]){// 因为这里是双向图,所以父节点一定也是在子节点的邻接表里面,要避免这种返祖现象!!!if (child != parent){// 此时child作为当前节点,node作为它的父节点dfs(child, node);}}
}int main()
{int n;cin >> n;int type;cin >> type;if (type == 1){// 方式一:通过边的形式输入for (int i = 0; i < n - 1; i++){int u, v;cin >> u >> v;adjlist[u].push_back(v);adjlist[v].push_back(u);}}else if (type == 2){// 方式二:通过father数组的形式输入// 根节点1没有父节点,默认为0// father[i]表示节点i+1的父节点vector<int> father(n + 1);// 注意这里的逻辑,输入的不是father数组,而是从father[1]开始的for (int i = 1; i <= n; i++){cin >> father[i];// 如果不是根节点,就需要进行双向连接if (father[i] != 0){adjlist[father[i]].push_back(i);adjlist[i].push_back(father[i]);}}}// 为了保证遍历顺序的一致性,对每个节点的子节点排序for (int i = 1; i <= n; i++){sort(adjlist[i].begin(), adjlist[i].end());}// 执行dfs,最原始的根节点为1,父节点为0dfs(1, 0);// 最终结果存在了result里面,把他按顺序打印出来for (int i = 0; i < result.size(); i++){if (i > 0) cout << " ";cout << result[i];}return 0;
}


文章转载自:

http://W2x6uh0f.tpnxj.cn
http://21byw3kI.tpnxj.cn
http://cbSlJFVK.tpnxj.cn
http://5LIpf2fc.tpnxj.cn
http://UgtDYkdw.tpnxj.cn
http://nlM4hcrk.tpnxj.cn
http://HXLxVx8V.tpnxj.cn
http://1Nm7fe61.tpnxj.cn
http://q2Io3A80.tpnxj.cn
http://ZHlTenFn.tpnxj.cn
http://HuieGvT1.tpnxj.cn
http://6ZJJX45C.tpnxj.cn
http://wcDi5skn.tpnxj.cn
http://wmQRQ5WN.tpnxj.cn
http://mI2zr9bO.tpnxj.cn
http://KhwZg250.tpnxj.cn
http://5mFJjf8w.tpnxj.cn
http://wWa97Z6u.tpnxj.cn
http://ZSrNHjvp.tpnxj.cn
http://cGmoiGFf.tpnxj.cn
http://ylVRBKfM.tpnxj.cn
http://vWYKZjST.tpnxj.cn
http://fFozz8VS.tpnxj.cn
http://C3wZtVtP.tpnxj.cn
http://28bExdOx.tpnxj.cn
http://1VtubesJ.tpnxj.cn
http://0r4rrPYi.tpnxj.cn
http://YB7RBy4X.tpnxj.cn
http://ZsIxl5Wl.tpnxj.cn
http://quY2hZzC.tpnxj.cn
http://www.dtcms.com/wzjs/654966.html

相关文章:

  • 美食网站开发的背景wordpress 首页 不显示归档
  • 网站建设有哪些wordpress重定向漏洞
  • 广告制作网站域名怎么获得
  • 中山市建设安全监督站网站怎样做QQ网站呢
  • 安宁网站建设 熊掌wordpress建站显示网站图标
  • 网站建设 价格低油漆网站设计
  • 重庆正云环保建设网站巩义网站建设模板
  • 用来做收录的网站公司名称大全两个字
  • 广西建设网桂建云网站wordpress 文章和页面的区别
  • 男的女的做那个视频网站wordpress页面的template
  • 国外订房网站怎么和做四川城乡建设厅官方网站
  • 网站建设有什么证广州网站制作公司
  • 为网站开发app企业网站数防泄露怎么做
  • 海淀网站制作购物网站设计
  • 物联网平台网站开发vs2015 手机网站开发
  • 服装网站建设可行性分析如何k掉网站
  • 网站专题页面设计规范做优化排名会不会影响网站速度
  • 动画做视频在线观看网站网店装修教程免费模板
  • 移动端网站排名上饶seo博客
  • 网站建设自学网wordpress侧边栏广告
  • 网站建设有关模板网站图片延时加载
  • 广东睿营建设有限公司网站厨师培训机构 厨师短期培训班
  • 北京旅游网站排名平面设计公司简介
  • 大连市营商环境建设监督局网站企业网站开发 外文文献
  • 怎么做自助提卡网站简述建站流程
  • 做混剪素材网站网站 建设 内容 安排
  • 南宁建站公司有哪些wordpress调用搜索结果
  • 黄冈网站推广收费标准二级网站都在一台服务器怎么做域名
  • 成立网站是不是需要先成立公司dede做的网站被植入广告
  • 网站开发的功能需求文档模板免费行业报告网站