转载于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模板的更多相关文章

  1. BFS与DFS模板

    搜索问题的解法 DFS(深度优先搜索) BFS(广度优先搜索) backtracking(回溯) DFS模板 void dfs(...) { // 结束递归的条件 if (...) { ..... / ...

  2. nyoj 27-水池数目(BFS, DFS)

    27-水池数目 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:17 submit:22 题目描述: 南阳理工学院校园里有一些小河和一些湖泊,现在,我 ...

  3. 匈牙利算法dfs模板 [二分图][二分图最大匹配]

    最近学了二分图最大匹配,bfs模板却死活打不出来?我可能学了假的bfs 于是用到了dfs模板 寻找二分图最大匹配的算法是匈牙利算法 匈牙利算法的主要程序是寻找增广路 寻找增光路是过程是:从一个未经配对 ...

  4. LeetCode:BFS/DFS

    BFS/DFS 在树专题和回溯算法中其实已经涉及到了BFS和DFS算法,这里单独提出再进一步学习一下 BFS 广度优先遍历 Breadth-First-Search 这部分的内容也主要是学习了labu ...

  5. POJ 2227 The Wedding Juicer (优先级队列+bfs+dfs)

    思路描述来自:http://hi.baidu.com/perfectcai_/item/701f2efa460cedcb0dd1c820也可以参考黑书P89的积水. 题意:Farmer John有一个 ...

  6. 邻结矩阵的建立和 BFS,DFS;;

    邻结矩阵比较简单,, 它的BFS,DFS, 两种遍历也比较简单,一个用队列, 一个用数组即可!!!但是邻接矩阵极其浪费空间,尤其是当它是一个稀疏矩阵的时候!!!-------------------- ...

  7. Collect More Jewels(hdu1044)(BFS+DFS)

    Collect More Jewels Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  8. Cleaning Robot (bfs+dfs)

    Cleaning Robot (bfs+dfs) Here, we want to solve path planning for a mobile robot cleaning a rectangu ...

  9. DFS模板

    DFS模板 题型分类:我们可以将DFS题分为两大类: 1 . 地图型:这种题型将地图输入,要求完成一定的任务.因为地图的存在.使得题意清楚形象化,容易理清搜索思路.AOJ 869-迷宫(遍历地图,四向 ...

随机推荐

  1. Presto 0.22.0 安装记录

    1. 下载 & 解压 # 下载 wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.220/pres ...

  2. python数据库-安装问题总结(48)

    一.ERROR1698(28000):Access denied for user root@localhost错误 我的操作系统是ubuntu: 我的MySQL版本是: 安装完成后,登录mysql的 ...

  3. 前端笔记之React(四)生命周期&Virtual DOM和Diff算法&日历组件开发

    一.React生命周期 一个组件从出生到消亡,在各个阶段React提供给我们调用的接口,就是生命周期. 生命周期这个东西,必须有项目,才知道他们干嘛的. 1.1 Mouting阶段[装载过程] 这个阶 ...

  4. django基础知识之布署:

    布署 从uwsgi.nginx.静态文件三个方面处理 服务器介绍 服务器:私有服务器.公有服务器 私有服务器:公司自己购买.自己维护,只布署自己的应用,可供公司内部或外网访问 公有服务器:集成好运营环 ...

  5. Fiolki题解

    问题 B: Fiolki 时间限制: 3 Sec  内存限制: 128 MB 题目描述 化学家吉丽想要配置一种神奇的药水来拯救世界. 吉丽有n种不同的液体物质,和n个药瓶(均从1到n编号).初始时,第 ...

  6. Java编程思想:进程控制

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public ...

  7. [记录]一则HTTP配置文件参考记录

    # cat ../conf/httpd.conf | grep -vE "^$|^#" ServerTokens OS ServerRoot "/etc/httpd&qu ...

  8. 根据数据库帮助类采用事务插入图片到sql server数据库中

    我们定义数据库为image类型,然后读取图片为字符流,再保存到数据库中,首先我们定义一个读取图片的公共类,此公共类以后会用到,所以可以建立相应的帮助类 public static byte[] Rea ...

  9. Preface Numbering序言页码

    题面 (preface.pas/c/cpp) 一类书的序言是以罗马数字标页码的.传统罗马数字用单个字母表示特定的数值,以下是标准数字表: I 1 V 5 X 10 L 50 C 100 D 500 M ...

  10. Excel催化剂开源第27波-Excel离线生成词云图

    在数据分析领域,词云图已经成为在文本分析中装逼的首选图表,大家热烈地讨论如何在Python上做数据分析.做词云图. 数据分析从来都是Excel的主战场,能够让普通用户使用上的技术才是最有价值的技术,一 ...