DFS模板代码
2016-03-19 21:43
225 查看
<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; }
相关文章推荐
- Exception in thread "main" java.lang.UnsupportedClassVersionError错误
- 自己用C语言写PIC32单片机的serial bootloader
- 一起talk C栗子吧(第一百二十五回:C语言实例--显示文件名和行号)
- NIIT 实训java笔记--3.10
- Java开发编程基础-1
- 【转】Java 中的 i = i++
- c# 委托
- Python代码
- JVM之Java程序与内存映射
- Java开发入门
- java mail发送邮件
- C语言的输入与输出
- Java --- static / final 常量初始化
- c++第二次实验项目四
- 哈夫曼树的创建和编码
- 143. Reorder List | Java最短代码实现
- git推送文件至github缺少README文件
- java数组拷贝native方法
- C++中关于一维、二维、三维动态数组的定义
- python xpath 基本用法