BFS/DFS 模板 代码
来源:互联网 发布:淘宝退衣服包装袋损坏 编辑:程序博客网 时间:2024/04/28 20:02
转自:http://blog.csdn.net/liygcheng/article/details/12353555
- <span style="font-size:18px">#include<cstdio>
- #include<cstring>
- #include<queue>
- #include<algorithm>
- using namespace std;
- const int maxn=100;
- bool vst[maxn][maxn]; // 访问标记
- int dir[4][2]={0,1,0,-1,1,0,-1,0}; // 方向向量
- struct State // BFS 队列中的状态数据结构
- {
- int x,y; // 坐标位置
- int Step_Counter; // 搜索步数统计器
- };
- State a[maxn];
- boolCheckState(State s) // 约束条件检验
- {
- if(!vst[s.x][s.y] && ...) // 满足条件
- return 1;
- else // 约束条件冲突
- return 0;
- }
- void bfs(State st)
- {
- queue <State> q; // BFS 队列
- State now,next; // 定义2 个状态,当前和下一个
- st.Step_Counter=0; // 计数器清零
- q.push(st); // 入队
- vst[st.x][st.y]=1; // 访问标记
- while(!q.empty())
- {
- now=q.front(); // 取队首元素进行扩展
- if(now==G) // 出现目标态,此时为Step_Counter 的最小值,可以退出即可
- {
- ...... // 做相关处理
- return;
- }
- for(int i=0;i<4;i++)
- {
- next.x=now.x+dir[i][0]; // 按照规则生成 下一个状态
- next.y=now.y+dir[i][1];
- next.Step_Counter=now.Step_Counter+1; // 计数器加1
- if(CheckState(next)) // 如果状态满足约束条件则入队
- {
- q.push(next);
- vst[next.x][next.y]=1; //访问标记
- }
- }
- q.pop(); // 队首元素出队
- }
- return;
- }
- int main()
- {
- ......
- return 0;
- }
- </span><pre name="code" class="cpp">DFS:
- /*
- 该DFS 框架以2D 坐标范围为例,来体现DFS 算法的实现思想。
- */
- #include<cstdio>
- #include<cstring>
- #include<cstdlib>
- using namespace std;
- const int maxn=100;
- bool vst[maxn][maxn]; // 访问标记
- int map[maxn][maxn]; // 坐标范围
- int dir[4][2]={0,1,0,-1,1,0,-1,0}; // 方向向量,(x,y)周围的四个方向
- bool CheckEdge(int x,int y) // 边界条件和约束条件的判断
- {
- if(!vst[x][y] && ...) // 满足条件
- return 1;
- else // 与约束条件冲突
- return 0;
- }
- void dfs(int x,int y)
- {
- vst[x][y]=1; // 标记该节点被访问过
- if(map[x][y]==G) // 出现目标态G
- {
- ...... // 做相应处理
- return;
- }
- for(int i=0;i<4;i++)
- {
- if(CheckEdge(x+dir[i][0],y+dir[i][1])) // 按照规则生成下一个节点
- dfs(x+dir[i][0],y+dir[i][1]);
- }
- return; // 没有下层搜索节点,回溯
- }
- int main()
- {
- ......
- return 0;
- }
- </pre><br><br>
0 0
- BFS/DFS 模板 代码
- BFS/DFS 模板 代码
- BFS/DFS 模板 代码
- BFS/DFS 模板 代码
- BFS和DFS模板
- BFS&&DFS模板
- BFS/DFS模板
- DFS&&BFS模板
- BFS DFS 模板
- DFS和BFS模板
- bfs和dfs 模板
- DFS与BFS模板
- BFS+DFS 模板
- BFS/DFS模板
- DFS&&BFS模板
- 模板--bfs和dfs
- DFS和BFS模板
- DFS和BFS的思路模板伪代码
- 被膜拜的英国留学:结识各国王储政要贵族土豪
- 集合
- Coco2dx-3.0 (一) 安装coco2dx-3.0 创建新工程(Win7 64位)
- mysql+jdbc安装
- Maven+Spring+MVC结构中,jetty/tomcat是如何启动项目的
- BFS/DFS 模板 代码
- 文章整理
- cocos2dx 常见的特效
- vs2008每次build都会重新编译链接的解决办法
- 高效的vim配置及其插件管理
- HBase如何合理设置客户端Write Buffer
- 用递归实现求一个迷宫是否有通路
- 简述py2exe的使用方法
- WEBAPP开发技巧总结