bfs
广度优先搜索
Rancho__
这个作者很懒,什么都没留下…
展开
-
POJ-3984-迷宫问题
这题是bfs的基础性题目,但是基础才显得很重要。题目中的要求是输出每一个我们走过的点,所以我们每次记录下它的上一个节点是谁就行了。但是我们因此就不能再使用队列了,我们开辟一个一维数组就行了,因为迷宫的大小是5*5的,所以我们直接开一个一维数组,然后模拟一下队列的进出就行了。这个题比较坑的一点是它的输出圆括号里面,逗号后面有个空格,一定要输出,不然它会说,你的答案几乎正确,但是格式不对。...原创 2018-12-04 15:50:41 · 1554 阅读 · 0 评论 -
HUST软件与微电子学院第八届程序设计竞赛-小乐乐下象棋
这题其实很简单,我们可以用一个bfs搜索出所有的,小于k步的,到不同点不同步数的方案数。我们首先初始化,走到(0,0)点的时候,我们把步数设置为0,但是方法数设置为1,这是因为我们走零步,到一个点,确实有一种方法。然后就是bfs,当步数等于k的时候,我们就跳过这点,因为题目中要求是等于k步,即使你搜了大于k步的方案数,我们也用不着。越界判断之后,我么先加上从别的点到达下一个点的方案数,...原创 2018-12-04 11:58:46 · 125 阅读 · 0 评论 -
Openjudge-4115-佐助和鸣人
这一题是一道广搜的题目,首先我们通过读入字符串读入每一行,然后顺带找到鸣人的位置。然后我们初始化之后,就进行广搜,还是广搜的格式,但是要压入队列的条件我们可以稍微变一变,我们可以直接判断下一个要走的点,是星号或者是加号,我们就判断是否走过这一点是否走过。我们判断的依据是,假设我们走这一点,消耗零个查克拉,然后在标记数组里面查看是否为零。这么说,你可能不明白,但是如果这一点是#号,且查克...原创 2018-12-03 19:01:21 · 193 阅读 · 0 评论 -
POJ-3278 抓住这头牛
广搜解决。广搜搜出最短路,直接输出返回就行了。每个点只搜一次,而且界限进行一次判断。else 语句里面不要用if else if,这样的话就直走一条路了。#include <iostream>#include <queue>#include <cstring>using namespace std;const int MaxN=1...原创 2018-11-30 13:54:58 · 178 阅读 · 0 评论 -
2007年中山大学内部选拔赛第六试----九数码
本题的题意是:给出一个包含数字1~9的排列的目标状态和一系列不同的操作,再给出一些起始状态,求出从起始状态达到目标状态所需要的最少操作数。首先这是一个九宫格,其实也就是求一个排列数,9!是所有的状态,即362880。而每一个排列 都对应着一个康托展开数,开辟一个ans数组,下标是康托展开数,存入从目标状态到起始状态所需要的最小步数即可。等到使用的时候直接进行查询,这样可以应对有很多输入...原创 2018-10-14 11:19:11 · 101 阅读 · 0 评论 -
POJ-2251-地下城
这题是一道简单的广搜题目,读入的时候,需要注意,如果是用scanf读入的话,就直接读取每行的字符串,不然的话,行尾的回车,也会被当成字符读入,这样的话,每次读取的数目就会小于我们想要的数目,因为每次把回车当成迷宫读入了嘛。所以如果直接读入一个字符串的话,我们就把回车一并读入,但是不用它就可以了。如果是用cin读入的话,我们就可以用三重循环读入每一个字符,cin会自动跳过空白符。还有就是cin...原创 2019-02-04 10:57:30 · 197 阅读 · 0 评论 -
POJ-1426-Find The Multiple
这题的题意说的是找到一个m,m的值就是n的倍数,并且m仅由1和0组成。这题的话,我们用广搜,搜索还是很快的,我们让1入队列,每次向下分支的时候,我们就让这个队列头的数乘10,或者乘10+1就行了,因为我们最开始只让1入了队列。这题就相当于是在寻找仅由1、0组成的数,且是n的倍数的数,理解题意就好写多了。#include <iostream>#include <queue&...原创 2019-01-23 17:08:18 · 67 阅读 · 0 评论 -
POJ-3984-迷宫问题
这个广搜有点特殊,它要求输出路径,而不是步数,我们有两种以上的做法,我们可以使用queue类,然后把不用的点都弹出去,我们也可以用数组来模拟队列, 然后只让整数指针做加加操作就行了。我们这样的话,我们每次都记录,前一步是从哪个节点跳过来的,最后找到右下角之后,进行输出就可以了。对于输出我们可以使用递归进行输出,这样我们的输出就由逆序转为了顺序。#include &lt;cstdio&gt;...原创 2019-02-17 10:23:26 · 220 阅读 · 0 评论 -
POJ-3669-流星雨
这题的话,卡了有两个小时左右,首先更新地图的时候越界了,我们进行更新的时候,要判断一下是不是小于零了,越界就会Runtime Error。然后bfs 的时候,我没有允许它搜出300以外的范围,然后就在300以内搜,然后就错了,实际上题目的意思是流星雨的轰炸范围是0~300,然后我就把世界理解成了300,英文很烂,难受。所以地图开的大一点,然后直接搜就可以了,这题的思路还是好想的。#inclu...原创 2019-02-17 15:27:42 · 105 阅读 · 0 评论