广度优先搜索
文章平均质量分 82
玩世彳不恭
这个作者很懒,什么都没留下…
展开
-
POJ 2251 Dungeon Master
题目链接:Dungeon Master 解题思路:从二维转化成了三维,用BFS,注意图的录入方式。 #include #include #include #define MAX 35 using namespace std; struct A{ int x, y, z, time; }; typedef struct A node; char map[MAX][原创 2013-08-02 16:08:23 · 480 阅读 · 0 评论 -
HDU 5094 Maze
题目链接: 解题思路:原创 2014-11-13 09:04:38 · 394 阅读 · 0 评论 -
HDU 1044 Collect More Jewels
题目链接:Collect More Jewels 解题思路:一看又是简单的广搜,还以为水题,所以简单敲了一发,T了。思佳说用BFS + DFS。算了算总状态数50*50*2^10 = 256W, 一共10组,而且还有它给出的时间有可能很多,这样所有宝物都能捡到还能瞎逛。就是宝物逝去序列的所有组合。所以应该先处理两两宝物之间的最短路,和起点到所有宝物的最短路,终点到所有宝物的最短路,全部用BFS跑原创 2014-12-19 16:30:56 · 424 阅读 · 0 评论 -
A*算法——启发式的广度优先搜索
一.A*算法 A*算法与普通的BFS不同的点在于,BFS始终是以当前节点到初始节点的距离为基准,每次都选取较小值进行扩展。而A*算法则是通过一个估价函数F(x) = G(x) + H(X),每次都已这个值为基准,选取较小的值进行扩展。 二.估价函数 F(x) = G(x) + H(X) F(x)是我们最后估计出来的值,不是真实值,这个值越小说原创 2014-12-19 18:05:10 · 3197 阅读 · 0 评论 -
HDU 1428 漫步校园
题目链接:漫步校园 解题思路:语死早,题意说是从左上角到右下角,求不同路径数,他给走过的路径有个限制条件,从A->B的话必须存在一条从B到右下角的路比所有的从A到右下角的路都短。也就是B->右下角的最短路比A->右下角的最短路短。然后就是先BFS,处理出所有点到右下的最短路,然后再进行DFS计数。要用记忆化搜索。其实就是个DP #include #include #include #d原创 2014-12-19 15:23:06 · 440 阅读 · 0 评论 -
HDU 1072 Nightmare
题目链接:Nightmare 解题思路:这道题目也是简单的广搜,主要处理好炸弹的状态就好了。 #include #include #include #define MAX 10 #define MAXT 7 using namespace std; struct node{ int x, y, s, t; node(){} node(int xx, int原创 2014-12-19 15:45:30 · 329 阅读 · 0 评论 -
HDU 1043 Eight
题目链接:Eight 解题思路:原来不知道,这是有名的8数码问题,它还用和15数码来废话半天。看了眼过的人数,直接BFS肯定就T了,况且,状态总数是9!, 36W,我怎么都不会估算复杂度了,这不是很少的状态么怎么还会TLE。 后来有人说打表,就是从终点向其他状态扩展同时记录操作序列,然后全部存到map里面,我看也有人用康托展开就存下了,其实map更简单。 还有无解的情况,其实就是逆序数的问题原创 2014-12-19 16:30:24 · 406 阅读 · 0 评论 -
HDU 4634 Swipe Bo
题目链接:Swipe Bo 解题思路:这个题目刚开始搞不清楚是为什么要判断两次方向,只能按照kuangbin大爷的写了。。。。。 根据代码来说第一个转向就是对于当前即将要扩展的节点进行一次方向判定,如果这个点不是转向标志的话,这里不起作用。 根据代码来说第二个转向就是对于下一节点进行判断,如果这里其作用的话,那么下一个循环的初始还会进行判断,那么这里就像当余无用了。 但是有原创 2014-12-19 15:42:02 · 809 阅读 · 0 评论