BFS DFS模板
转载于https://blog.csdn.net/alalalalalqp/article/details/9155419
BFS模板:
#include<cstdio> #include<cstring> #include<queue> #include<algorithm> using namespace std; const int maxn=; bool vst[maxn][maxn]; // 访问标记 int dir[][]={,,,-,,,-,}; // 方向向量 struct State // BFS 队列中的状态数据结构 { int x,y; // 坐标位置 int Step_Counter; // 搜索步数统计器 }; State a[maxn]; boolCheckState(State s) // 约束条件检验 { if(!vst[s.x][s.y] && ...) // 满足条件 return ; else // 约束条件冲突 return ; } void bfs(State st) { queue <State> q; // BFS 队列 State now,next; // 定义2 个状态,当前和下一个 st.Step_Counter=; // 计数器清零 q.push(st); // 入队 vst[st.x][st.y]=; // 访问标记 while(!q.empty()) { now=q.front(); // 取队首元素进行扩展 if(now==G) // 出现目标态,此时为Step_Counter 的最小值,可以退出即可 { ...... // 做相关处理 return; } for(int i=;i<;i++) { next.x=now.x+dir[i][]; // 按照规则生成 下一个状态 next.y=now.y+dir[i][]; next.Step_Counter=now.Step_Counter+; // 计数器加1 if(CheckState(next)) // 如果状态满足约束条件则入队 { q.push(next); vst[next.x][next.y]=; //访问标记 } } q.pop(); // 队首元素出队 } return; } int main() { ...... return ; }
DFS模板:
DFS: /* 该DFS 框架以2D 坐标范围为例,来体现DFS 算法的实现思想。 */ #include<cstdio> #include<cstring> #include<cstdlib> using namespace std; const int maxn=; bool vst[maxn][maxn]; // 访问标记 int map[maxn][maxn]; // 坐标范围 int dir[][]={,,,-,,,-,}; // 方向向量,(x,y)周围的四个方向 bool CheckEdge(int x,int y) // 边界条件和约束条件的判断 { if(!vst[x][y] && ...) // 满足条件 return ; else // 与约束条件冲突 return ; } void dfs(int x,int y) { vst[x][y]=; // 标记该节点被访问过 if(map[x][y]==G) // 出现目标态G { ...... // 做相应处理 return; } for(int i=;i<;i++) { if(CheckEdge(x+dir[i][],y+dir[i][])) // 按照规则生成下一个节点 dfs(x+dir[i][],y+dir[i][]); } return; // 没有下层搜索节点,回溯 } int main() { ...... return ; }
自用,侵删。
BFS DFS模板的更多相关文章
- BFS与DFS模板
搜索问题的解法 DFS(深度优先搜索) BFS(广度优先搜索) backtracking(回溯) DFS模板 void dfs(...) { // 结束递归的条件 if (...) { ..... / ...
- nyoj 27-水池数目(BFS, DFS)
27-水池数目 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:17 submit:22 题目描述: 南阳理工学院校园里有一些小河和一些湖泊,现在,我 ...
- 匈牙利算法dfs模板 [二分图][二分图最大匹配]
最近学了二分图最大匹配,bfs模板却死活打不出来?我可能学了假的bfs 于是用到了dfs模板 寻找二分图最大匹配的算法是匈牙利算法 匈牙利算法的主要程序是寻找增广路 寻找增光路是过程是:从一个未经配对 ...
- LeetCode:BFS/DFS
BFS/DFS 在树专题和回溯算法中其实已经涉及到了BFS和DFS算法,这里单独提出再进一步学习一下 BFS 广度优先遍历 Breadth-First-Search 这部分的内容也主要是学习了labu ...
- POJ 2227 The Wedding Juicer (优先级队列+bfs+dfs)
思路描述来自:http://hi.baidu.com/perfectcai_/item/701f2efa460cedcb0dd1c820也可以参考黑书P89的积水. 题意:Farmer John有一个 ...
- 邻结矩阵的建立和 BFS,DFS;;
邻结矩阵比较简单,, 它的BFS,DFS, 两种遍历也比较简单,一个用队列, 一个用数组即可!!!但是邻接矩阵极其浪费空间,尤其是当它是一个稀疏矩阵的时候!!!-------------------- ...
- Collect More Jewels(hdu1044)(BFS+DFS)
Collect More Jewels Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- Cleaning Robot (bfs+dfs)
Cleaning Robot (bfs+dfs) Here, we want to solve path planning for a mobile robot cleaning a rectangu ...
- DFS模板
DFS模板 题型分类:我们可以将DFS题分为两大类: 1 . 地图型:这种题型将地图输入,要求完成一定的任务.因为地图的存在.使得题意清楚形象化,容易理清搜索思路.AOJ 869-迷宫(遍历地图,四向 ...
随机推荐
- Android使用Camera2获取预览数据
一.Camera2简介 Camera2是Google在Android 5.0后推出的一个全新的相机API,Camera2和Camera没有继承关系,是完全重新设计的,且Camera2支持的功能也更加丰 ...
- Appium+python自动化(十六)- ADB命令,知否知否,应是必知必会(超详解)
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态. adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或 ...
- java-IO各个区别
BIO:JDK1.4以前用的都是BIO,阻塞IO. 阻塞到我们的读写方法.BIO,如果有一台服务器,能承受简单的客户端请求,那么使用io和net中的同步.阻塞式API应该是可以实现了.但是为了一个用户 ...
- C++20 的 Modules
最近看了两篇关于 C++ 20 Modules 很有意思的文章,戳: <Understanding C++ Modules: Part 1: Hello Modules, and Module ...
- .NET Core 3.0之深入源码理解Kestrel的集成与应用(二)
前言 前一篇文章主要介绍了.NET Core继承Kestrel的目的.运行方式以及相关的使用,接下来将进一步从源码角度探讨.NET Core 3.0中关于Kestrel的其他内容,该部分内容,我们 ...
- Bzoj 2563: 阿狸和桃子的游戏 题解
2563: 阿狸和桃子的游戏 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 970 Solved: 695[Submit][Status][Discu ...
- centos7 添加用户,组
centos7添加用户,组. groupadd projectUsers //添加组,组名projectUser. cat /etc/group //查看最后一行是projectUser. 添加用户并 ...
- Spring Boot微服务电商项目开发实战 --- 多环境部署配置、端口号统一配置及Dubbo提供者消费者实现
昨天已经搭建好了SpringBoot基于Maven的基础父子级项目,今天开始进入项目分模块及分布式实现.首先我们基于昨天的项目,在父级工程下建lyn-sys,lyn-customer,lyn-good ...
- vs断点命不中?
用管理员权限打开vs,再打开工程即可
- nginx的access.log 和 error.log
nginx 常用的配置文件有两种: access.log 和 error.log access.log 的作用是 记录用户所有的访问请求,不论状态码,包括200 ,404,500等请求,404,500 ...