广度优先搜索(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 · 442 阅读 · 0 评论 -
UVALive 6665 Dragonâs Cruller(BFS+优先队列+康拓展开)
题目链接:UVALIve 6665 Dragonas Cruller 题意: 以九宫格的形式给出0–8八个数字,然后通过移动0数字,使这个九宫格变成给定的状态,上下移动和左右移动的权值不一样,求最小移动路径值。 分析: 用康拓排序来去重。 因为上下移动和左右移动的权值不一样,所以必须使用优先队列,这样才能保证解的优先性。 然而3000MS的限制还是跑了2979MS,好险。。。。。。o(╯原创 2016-03-14 22:12:33 · 551 阅读 · 0 评论 -
HDU 1241 Oil Deposits(油藏)
题目链接:HDU 1241题意:给一个二维字符数组,‘@’代表有油,‘*’代表没有,如果两个油田在水平或竖直或对角线方向相通,那么这两个油田属于同一个pocket,pocket里可能也只有一个油田。问给定的油藏情况共有多少个pocket?分析:两天前做的时候还没有头绪,今天拿出来又想了一下,突然有了思路。同样是BFS搜索。但是每次搜索是从一个尚未被访问的油田开始,然后把从这个油原创 2015-12-26 20:27:52 · 420 阅读 · 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 · 398 阅读 · 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 · 391 阅读 · 0 评论 -
UVa 11624 Fire!(起火迷宫)
题目链接:UVa 11624题意:迷宫中有着火点,每次向四周扩散(墙不会被点燃),问能否逃出?若逃出需几步?分析:一开始是想用bfs先记录下着火的顺序,也就是可走的方格在哪一步被点着,然后在用bfs找最短路径时多个判断即可。可是这样就TLE了,然后就废了好大劲,将两个bfs合并了,难点就是return条件判断和“剪枝”。从早上做到现在,终于AC了!CODE:#inc原创 2015-12-26 19:09:44 · 599 阅读 · 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 · 404 阅读 · 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 · 428 阅读 · 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 · 533 阅读 · 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 · 475 阅读 · 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 · 552 阅读 · 0 评论