广度优先搜索(BFS)模板
伪代码
void BFS(int S){queue<int> q;q.push(s);while(!q.empty()){取出队首元素top;访问队首元素top;将队首元素出队;将top的下一层结点中未曾入队的结点全部入队,并设置为已入队;}
}
说明
1. 定义队列q,并将起点s入队
2. 写一个while循环,循环条件是队列q非空
3. 在while循环中,先取出队首元素top,然后访问它(访问可以是任何事情,例如将其输出)。访问完后将其出队。
4. 将top的下一层结点中所有未曾入队的结点入队,并标记它们的层号为now的层号加1,同时设置这些入队的结点已入过队。
5. 返回2继续循环
BFS体现在哪
1. 采用的是队列,具有先进先出的特点
2. 当队首元素被访问、出队后,立即入队的是它的下一层元素
出处:胡凡 曾磊《算法笔记》
相关文章:

static关键字和内存使用
1 static静态的,用来修饰属性,方法,代码块,内部类 2 当其中一个变量对此属性进行修改,会导致其他对象对此属性的一个调用 vs 实例变量:对象各有一套副本 3 静态变量和方法随着类的加载而加载,可…

转载:用 Tomcat 和 Eclipse 开发 Web 应用程序
原文地址:http://www.ibm.com/developerworks/cn/opensource/os-eclipse-tomcat/所需的组件 Eclipse V3.2 Callisto 集成开发环境 (IDE) 包括了用于 Web 开发及与服务器集成的工具。所以,除了软件开发工具箱 (SDK) 之外,只需安装 Eclipse 和 Apache Tomc…

【学习——字符串】字符串之一网打尽quq
学弟lyh上午讲课,喜闻乐见的制胡窜 一上午讲惹KMP, manachar, trie树, AC自动机 orz 例题都是洛咕咕上的, 贴一下(督促自己不要咕 AC自动机不会qaq(并且没有学的意向 manachar 没写过 P4555 […

分别用BFS和DFS求给定的矩阵中“块”的个数
目录 背景介绍 BFS实现 基本思想 获取相邻位置元素技巧 BFS函数 DFS实现 基本思想 DFS函数 完整代码 背景介绍 背景 给出一个mxn的矩阵,矩阵中的元素为0或1。称位置(x,y)与其上下左右四个位置(x,y1),(x,y-1),(x-1,y),(x1,y)是相邻的。如果矩阵中有若干(…

[Python_7] Python Socket 编程
0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*-"""TCP 协议的 Socket 编程,Server 端Server 端绑定到指定地址,监听特定的端口,接受发来的连接请求 "&q…

2014.12.01 B/S之windows8.1下安装IIS
1、打开 控制面板——程序——程序和功能——启用或关闭windows功能 2、找到Internet信息服务 3、等待安装完毕即可 4、控制面板——系统和安全——管理工具——Internet Information Services (IIS)管理器 默认路径为 C:\inetpub\wwwroot 路径更改以后记得更改权限。 转载于:h…

[分享]C# 获取Outlook帐号和密码
[分享]C# 获取Outlook帐号和密码http://www.vjsdn.com/bbs/bbsTopicDetails.aspx?pid108281214 转载于:https://www.cnblogs.com/vjsdn/archive/2009/09/26/1574341.html

BFS:走出迷宫并输出最小步数
目录 背景 描述 例子 思路 完整代码 收获总结 背景 描述 给定一个n*m大小的迷宫,其中*代表不可通过的墙壁,而“.”代表墙壁,S表示起点,T代表重点。移动过程中,如果当前位置是(x,y)(下标从0开始),且…

人工智能和机器学习领域有哪些有趣的开源项目
人工智能和机器学习领域有哪些有趣的开源项目?投递人 itwriter 发布于 2014-12-02 11:21 评论(0) 有20人阅读 原文链接 [收藏] 本文简要介绍了 10 款 Quora 上网友推荐的 人工智能和机器学习领域方面的开源项目。 GraphLab GraphLab 是一种新的面向机器学习…

复杂度归纳--小结
一、复杂度分析的4个概念1.最坏情况时间复杂度:代码在最理想情况下执行的时间复杂度。2.最好情况时间复杂度:代码在最坏情况下执行的时间复杂度。3.平均时间复杂度:用代码在所有情况下执行的次数的加权平均值表示。4.均摊时间复杂度ÿ…

KDE社区:首个KDialogue正式开放
今天KDE社区与“People Behind KDE” 合作推出一个非常有意思的栏目,叫作KDialogue。 关于KDialogue,有点类似头脑风暴。简言之就是成员向社区发起关于KDE的话题(或某一问题),然后KDE的开发者会被邀请参与这个话题。KE…

1091 Acute Stroke 需再做
这是BFS的典型应用场景:求给定矩阵中块(由相邻的点组成)的大小之和。不同的是这一次是三维。 判断是否邻接的依据是是否有公共边,还是可以用上增量数组的技巧 int X[6] {0,0,1,-1,0,0};//增量数组 int Y[6] {1,-1,0,0,0,0}; int Z[6] {0,0,0,0,1,-…

Ext UI 第一步
Code//Ext.onReady(function(){ var _panelnew Ext.Panel({ renderTo:Ext.getBody(), title:"XXX" });});空面板 加按钮方法:addButton(String/Object _config,Function _handler,Object _scope):添加一个按钮对象到面板Codevar loadfunction(){ …

深入浅出 Java Concurrency (29): 线程池 part 2 Executor 以及Executors[转]
Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。 下面这张图完整描述了线程池的类体系结构。 首先Executor的execute方法只是执行一个Runnable的任务&…

WPF的消息机制(二)- WPF内部的5个窗口之隐藏消息窗口
原文:WPF的消息机制(二)- WPF内部的5个窗口之隐藏消息窗口版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/powertoolsteam/article/details/6109036 目录 WPF的消息机制(一)-让…

二叉树:root==NULL和*root==NULL的区别
root NULL 通常为查找的递归边界,说明当前结点不存在。 *root NULL 表明当且结点存在,但是内容不存在。是创建一棵二叉树时的初始化操作。 前者常用得多。

Intent携带额外的数据的方法
1、putExtras(Bundle data):向Intent中放入需要“携带”的数据。2、putXxx(String key,Xxx data):向Bundle放入Int、Long等各种类型的数据。3、putSerializable(String key,Serializable data):向Bundle中放入一个可序列化的对象。转载于:https://www.cnblogs.com/ahao214/p/41…

为什么 JavaScript 的私有属性使用 # 符号
这几天 JavaScript 的私有属性又成为了前端社区热议的话题。原因很简单,这家伙长这样: 惊不惊喜!意不意外! 而且 TC39 委员会以及对此达成了一致意见,并且该提案已经进入了 stage 3。在 es 规范阶段 stage 3 是候选提案…

程序员感悟----路该怎么走
有一句话我一直记得很深,“当人深处迷茫之中时早已不再迷茫”。很绕很矛盾的话,也可能有人听到后会马上跳脚喊,我一直迷茫怎么还是迷茫呢?呵呵。静一下想一下再喊。 大家都这么大了,路该怎么走,你知道么&am…

1020 Tree Traversals
1. 有这样一个经典结论:中序序列可以和先序序列、后序序列、层序序列中的任意一个来构建唯一的二叉树,而后三者两两搭配或者三个一起上都不行。因为从本质上来说,后三者都只提供根结点,只有通过中序才能区分左右子树。 2. 本题用…

Android添加权限大讲解
http://bbs.51cto.com/thread-1096739-1.html 对于新手来说,最烦恼的不是如何从网上下载到安卓项目,而是下载到的安卓项目不知道如何添加权限和要添加哪些权限。现在就针对安卓的权限来讲解这些权限应该具体用在什么地方 首先在项目下找到 AndroidManife…

经典算法之选择排序
问题 有一数组a,长度为n,把数组中的元素从大到小重新排列 思路 选择排序十分容易理解。可以理解为有一个盘子,里面装着很多钻石,你可以从里面拿钻石,但一次只可以拿一颗。第一次你当然会拿最大的出来了,第二…

PHP 读写数据库出现中文乱码问题
一、我在PHP读写数据库时,出现中文乱码问题的解决方案: 1、加入一句话就行了: mysql_query("set character set utf8");//读库 mysql_query("set names utf8");//写库 //其实读写都可以只加入 m…

1086 Tree Traversals Again
1. 这题的核心部分是,根据二叉树的先序序列和中序序列求后序序列。等于是在1020 Tree Traversals这一题的基础上,把怎么得到先序序列和中序序列的难度加大了,不是直接给出,而是要曲折一点得到。 2. 先序序列的得到就是把Push后面…

Eclipse的Java工作集和多工程构建路径
一、Java工作集: Eclipse有一个小功能,就是创建Java Working Set。它的作用是解决Package Explorer窗格中创建很多工程时出现拥挤的麻烦。 在创建(New对话框)时可以加入原来存在的Java工程。创建完后,在左方Package Ex…

ORA-08002: sequence MySeq.currval is not yet defined in this session
2019独角兽企业重金招聘Python工程师标准>>> MySeq.currval 从你的会话中的MySeq序列获取最新的值并返回,因此,它未曾被定义,直到你在你的会话中至少一次用MySeq.NEXTVAL获取一个值。CURRVAL的目的是让你在你的代码中使用某个序列…

【Vegas原创】exp时,ORA-00932: 数据类型不一致解决方法
现象: EXP-00056: 遇到 ORACLE 错误 932 ORA-00932: 数据类型不一致: 应为 BLOB, CLOB, 但却获得 CHAR EXP-00000: 导出终止失败 解决方法: 运行2个脚本: SQL> ?/rdbms/admin/catmetx.sql SQL> ?/rdbms/admin/utlrp.sql 转载于:htt…

1102 Invert a Binary Tree 需再做
1. 题目的输入是,先给出结点总数N,然后N行给出的是值为x(0<x<N-1)的结点的左右结点的值,若不存在左/右结点,则值为 - 。 2. 这一题我用动态链表没有做出来,根据参考书提示改用静态链表。…

iOS安全攻防(八)Thoes的Logos简介
个人原创,转帖请注明来源:cnblogs.com/jailbreaker 上一篇帖子,讲到使用iOSOpenDev开发基于Theos的Tweak,功能Hook了SpringBoard的 -(void)applicationDidFinishLaunching:(id)application。 先简单讲一下Hook,Hook中文翻译为“钩子”,非常形…
Algs4-1.1.13编写一段代码,打印出一个M行N列的二维数组的转置(交换行和列)
1.1.13编写一段代码,打印出一个M行N列的二维数组的转置(交换行和列)。public class Test{public static void main(String[] args){//初始化int MInteger.parseInt(args[0]);int NInteger.parseInt(args[1]);String[][] arraynew String[M][N];for (int…