![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
搜索
菜菜魁
fighting!
展开
-
基础dfs搜索讲解
dfs名为深度优先搜索,顾名思义,是对一个问题按照一种模式不断更新搜索,当到无法搜索时,回复上一状态,继续搜索,直到搜索完成。二魁也做了不少dfs的题,发现都是在一些原有的基础上发生一些变动,比如加上时间限制,比如加上情况判断,又或者各种剪枝,但是本质逃不出dfs的基础问题。当然,有一些变化比较大的,比如匈牙利算法,但是dfs的核心思想不会变。我对于dfs算法的核心理解为对问题的所有可能按照...原创 2017-12-16 21:22:22 · 560 阅读 · 0 评论 -
FZU - 2150 Fire Game
有T组数据,每组数据包含一个n*m的图,其中#代表草,'.'代表没有草,两个小孩一起去烧草,两个小孩起始位置任意,求最少的烧完时间,所烧的第一块不花时间。两个孩子位置任意,所以我们遍历整张图,选所有两个点的情况进行bfs测时间,并依次比较选择最少的时间。#include <iostream>#include <cstring>#include <queu...原创 2018-07-22 20:33:46 · 241 阅读 · 0 评论 -
POJ - 3414 Pots
这道题的题意是给你两个容器,问你通过容器A和容器B能获得容量为C的液体。其中操作有三种,fill(a):把a填满,drop(a):把a倒掉,pour(a,b):把a倒入b中。要求把操作顺序输出。有很多种操作方式,我们一种一种遍历,直到出现结果为止,可以采取bfs的方式,这道题的难点在于怎么把路径输出。在bfs中,我们开始会选区队首的元素,通过队首的元素来获得队尾的元素,所以我们只需要在队尾标记...原创 2018-07-22 19:11:55 · 226 阅读 · 0 评论 -
POJ - 3126 Prime Path
给你n对四位素数,问你从每对中的一个,变成另一个,需要多少步操作,其中每步操作只能改变四位数中的一位,改变之后也必须为素数,并且数字不能以0开始。开始来一遍埃氏筛法,删选四位数以内的全部素数,然后再进行bfs。代码如下#include <iostream>#include <algorithm>#include <queue>#include &...原创 2018-07-22 16:44:24 · 123 阅读 · 0 评论 -
POJ - 1426 Find The Multiple
给你一个n(n<=200),输出是n的倍数并且全部由十进制的01构成的所有情况中的一种。这道题的难点在于对一个公式的理解,假设一串数字是abcde, 让它对p取余,结果和(((((a%p)*10+b)%p)*10+d)%10)*10+e)%p等价,所以我们枚举01序列进行取余操作,就能得到结果,不用担心数据太大。#include <iostream> #includ...原创 2018-07-22 16:39:57 · 128 阅读 · 0 评论 -
POJ - 3279 Fliptile
在一个nxm的图中,一个牛踩格子,踩一个格子上下左右和自己所在的格子都会翻转,1表示黑色,0表示白色。想要用最少的步数踩成全白,输出一个nxm的图,1表示踩,0表示不踩。#include <iostream>#include <algorithm>#include <queue>#include <string.h>using nam...原创 2018-07-22 15:04:04 · 126 阅读 · 0 评论 -
POJ - 3278 Catch That Cow
一道BFS搜索题,给你两个位置n和k,n去寻找k,走路方式有+1,-1,x2,每种操作花费一单位的时间,为最短时间到达k是多少。#include <iostream>#include <algorithm>#include <queue>#include <string.h>using namespace std;int n, k...原创 2018-07-22 10:36:23 · 90 阅读 · 0 评论 -
POJ - 2251 Dungeon Master
这是一道简单的搜索题,题意是给你一个立体图形L,R,C。其中L代表高,R和C代表长和宽,从S出发到E,中间只能走'.',不能走'#',一次只能向上或者向下或者向前向后向左向右一步。和正常的二维的BFS相同,只不过加了一个维度,但是具体操作没有改变,还是求两点间的最短距离,加上向上向下两种情况即可。#include <iostream>#include <algorit...原创 2018-07-22 09:52:40 · 89 阅读 · 0 评论 -
POJ - 3984 迷宫问题
打印路径的迷宫问题,根据bfs来说,队尾是由队首得到的,所以我们只需要加一个映射,让队尾映射到队首。用函数提供的queue函数比较法麻烦,需要建立指针,所以自己手撕了一个队列,用l和r表示边界,代码如下#include <iostream>#include <algorithm>#include <cstring>#include <queue...原创 2018-07-23 10:29:18 · 161 阅读 · 0 评论 -
UVA - 11624 Fire!
在一个迷宫中,有一个人J和一些火苗(用F表示,数量很多),人和火苗同时移动,问人在不触碰火苗燃烧地方的情况下,能不能出去,及不与火苗走的路径相交。本题一共两种解法,我们知道人和火苗的路径是不能确定的,而求某一种东西的最短时间一般用BFS,两种状态同时转换,怎么办呢?第一种方法,进行两边BFS,第一遍记录火苗的路径,并存储火苗到每一个点的最短时间,第二遍bfs走人,每一步的时间要小于火苗蔓延...原创 2018-07-23 09:44:58 · 141 阅读 · 0 评论