转载于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. 理论+实践解析“IT治理”之模式与原则

    IT治理工作作为企业信息化建设的上层建筑,扮演着及其重要的角色.本文结合作者的学习及实践经验给出一些借鉴. 一.IT治理概述 1.1 何为IT治理 在企业信息化建设中的最大问题,往往不是技术问题,也不 ...

  2. 数据结构&算法的引言+时间复杂度

    一.什么是计算机科学? 首先明确的一点就是计算机科学不仅仅是对计算机的研究,虽然计算机在科学发展的过程中发挥了重大的作用,但是它只是一个工具,一个没有灵魂的工具而已.所谓的计算机科学实际上是对问题.解 ...

  3. 站在巨人的肩膀上看Servlet——原来如此(更适合初学者认识Servlet)

    前言: 有段时间没更新博客了,这段时间因为要准备考试,考完试后又忙了一阵别的事,一直没能静下心来写博客.大学考试真是越来越恶心了,各种心酸,那酸爽,够味.不过还好,马上就要大三了,听大三学长学姐说大三 ...

  4. springboot2.x纯注解整合dubbo

    springboot1.x和springboot2.x整合差距挺大的,基于最新的2.x进行整合,使用纯注解的方式 依赖选取 首先pom文件的依赖引入,maven仓库有Apache和alibaba两个 ...

  5. linux学习书籍推荐《鸟哥的Linux私房菜》下载

    下载地址:点我 <鸟哥的Linux私房菜:基础学习篇>是具有知名度的Linux入门书<鸟哥的Linux私房菜基础学习篇>的最新版,全面而详细地介绍了Linux操作系统.< ...

  6. 使用nexus搭建npm私服

    第一步,下载nexus 下载链接: https://pan.baidu.com/s/1GOYi2M3nT4Wcy7JEYmnqdA 提取码: a9hf 第二步,解压缩 我下载的是nexus-3.16. ...

  7. Coder必须自废的两样神功

    Coder必须自废的两样神功 大理段氏以一阳指神功驰名天下.奉六脉宝经,立天龙佛院:凭借数百载基业威名,与嵩山少林.终南全真分庭抗礼:乃宋代中华武术三大派系之一. 二指禅是一种鲜为人知的秘传功法,通过 ...

  8. 跟着大彬读源码 - Redis 4 - 服务器的事件驱动有什么含义?(上)

    众所周知,Redis 服务器是一个事件驱动程序.那么事件驱动对于 Redis 而言有什么含义?源码中又是如何实现事件驱动的呢?今天,我们一起来认识下 Redis 服务器的事件驱动. 对于 Redis ...

  9. java算法题每日一练01,java入门简单算法题小练

    1.给数组做反序 public class Ak01 { public static void main(String[] args) { int[] a = new int[]{22,48,41,2 ...

  10. [转载]nginx负载均衡+keepalived三主(多主)配置

    nginx负载均衡+keepalived三主(多主)配置 1.实验环境,实现目标三台主机分别配置nginx负载均衡对后端多台主机做转发,同时配置keepalived实现HA,保证任意主机出现故障时其他 ...