
广度优先搜索(BFS)
文章平均质量分 75
ramay7
Life is not short,but float.
展开
-
POJ 3278 Catch That Cow(追赶母牛)
题目链接:POJ 3278 题意: 给出两个数字n,k。每次在一个位置p可选择先前走1步到达p+1,或者先前走p步到达2*p,或向后走一步到达p-1。问最少需要多少次移动可以从0出发到达k? 例如n=5,k=17时,最短的移动路径是:0-->5-->10-->9-->18-->17,记为4次。 思路: 用BFS搜索。每次从队列首取出一个所到达的位置,判断该位置是不是目标位置,如果不是的话原创 2015-12-21 16:39:58 · 460 阅读 · 0 评论 -
UVALive 6665 Dragonâs Cruller(BFS+优先队列+康拓展开)
题目链接:UVALIve 6665 Dragonas Cruller 题意: 以九宫格的形式给出0–8八个数字,然后通过移动0数字,使这个九宫格变成给定的状态,上下移动和左右移动的权值不一样,求最小移动路径值。 分析: 用康拓排序来去重。 因为上下移动和左右移动的权值不一样,所以必须使用优先队列,这样才能保证解的优先性。 然而3000MS的限制还是跑了2979MS,好险。。。。。。o(╯原创 2016-03-14 22:12:33 · 570 阅读 · 0 评论 -
HDU 1241 Oil Deposits(油藏)
题目链接:HDU 1241 题意: 给一个二维字符数组,‘@’代表有油,‘*’代表没有,如果两个油田在水平或竖直或对角线方向相通,那么这两个油田属于同一个pocket,pocket里可能也只有一个油田。问给定的油藏情况共有多少个pocket? 分析: 两天前做的时候还没有头绪,今天拿出来又想了一下,突然有了思路。 同样是BFS搜索。但是每次搜索是从一个尚未被访问的油田开始,然后把从这个油原创 2015-12-26 20:27:52 · 444 阅读 · 0 评论 -
HDU 1495 非常可乐
题目链接:HDU 1495 题意:给一瓶s升的可乐,和两个容量为n,m的杯子(满足n+m==s),问有可能将这杯可乐均分吗?若可能,最少需要多少次倒可乐的操作? 分析: BFS搜索。每次有6中选择,注意下操作的合法性即可。 CODE: #include #include #include #include #include #include #include #in原创 2015-12-27 12:01:40 · 421 阅读 · 0 评论 -
POJ 3984 迷宫问题
题目链接:POJ 3984 题意:走迷宫。 分析:在结构体里,设置一个字符串数组用以记录相应移动即可。 CODE: #include #include #include #include #include #include using namespace std; int dir[4][2] = { {0,1},{0,-1},{1,0},{-1,0} }; int原创 2015-12-26 19:43:14 · 403 阅读 · 0 评论 -
UVa 11624 Fire!(起火迷宫)
题目链接:UVa 11624 题意: 迷宫中有着火点,每次向四周扩散(墙不会被点燃),问能否逃出?若逃出需几步? 分析: 一开始是想用bfs先记录下着火的顺序,也就是可走的方格在哪一步被点着,然后在用bfs找最短路径时多个判断即可。可是这样就TLE了,然后就废了好大劲,将两个bfs合并了,难点就是return条件判断和“剪枝”。从早上做到现在,终于AC了! CODE: #inc原创 2015-12-26 19:09:44 · 644 阅读 · 0 评论 -
HDU 2612 Find a way(寻路)
题目链接:HDU 2612 题意: 给一张地图,"Y"和"M"表示两个人的位置,"#"表示道路不通,"."表示道路可行,"@"表示KFC,求从两个人分别从各自起点出发到一家KFC的最短路径和。 分析: 一开始是想对每一家KFC分别求出两个人的路径,然后相加,取最小值,可是这样果然TLE了,部分代码如下: int bfs(int sx,int sy,int ex,int ey) {//(原创 2015-12-27 14:25:44 · 432 阅读 · 0 评论 -
POJ 2251 Dungeon Master(地牢)
题目链接:POJ 2251 题意:迷宫问题。 分析: 二维变三维,BFS。注意存储下标含义即可。 a[j][k][i] = s[k]; if (s[k] == 'S') { sx = j, sy = k, sz = i; //i相当于z轴,对应L;j相当于x轴,对应C;k相当于y轴,对应R } else if (s[k] == 'E') { ex = j, ey = k原创 2015-12-25 18:29:37 · 464 阅读 · 0 评论 -
POJ 3414 Pots(水壶)
题目链接:POJ 3414 题意: 给两个容量分别为A,B的水壶,标号为1和2,初始水量都是0。每次操作有如下三种选择: ①FILL(i),将i水壶灌满(i=1或2) ②POUR(i),将i水壶中水倒完(i=1或2) ③DROP(i,j)。从i水壶倒水进j水壶,将j水壶倒满或i水壶中水倒完。 问能否经过若干次操作,使得其中一个水壶中的水量是C? 如果能,输出操作次数,以及操作历程原创 2015-12-22 10:17:42 · 561 阅读 · 0 评论 -
POJ 3087 Shuffle'm Up(洗牌)
题目链接:POJ 3087 题意: 有两副牌s1和s2各c张,每张纸牌用一个字符表示纸牌的颜色。还有一副2*c张的纸牌s。 先抽取s2的最底下一张纸牌(第c张),然后抽取s1最底下的一张纸牌(第c张)叠放在其上面,再抽取s2的最底下一张纸牌(此时是初始时的第c-1张)叠放在上面,接着然后抽取s1最底下的一张纸牌(此时也是初始时的第c-1张)叠放在其上面.....最后会形成一副2*c的纸牌,如原创 2015-12-21 20:49:32 · 495 阅读 · 0 评论 -
BestCoder #83 1003 zxa and leaf(二分查找/BFS)
题目链接: BestCoder #83 1003 zxa and leaf 题意: zxa有一棵含有nn个节点的无根树,包含(n-1)条无向边,点从1到n编号,定义每个点的度数为与这个点相连的边的数量,度数为1的节点被称作这棵树的叶子节点。 zxa想给每个节点设置它的好看度,好看度必须为正整数。他的无根树有m(1≤m≤n)个叶子节点,其中的k(1≤k≤m)个叶子节点的好看度已经确定,zxa只原创 2016-05-15 02:42:42 · 568 阅读 · 0 评论