搜索
xiaoxiaoluo
这个作者很懒,什么都没留下…
展开
-
poj 2225 三维空间宽度遍历
题目大意:给定一个三维的空间,还有起点和终点坐标,要你求到终点的最短距离解题思路:最短距离用宽度优先遍历,分别考虑上下,左右,前后6个方向。题目很简单,就是要注意下坐标顺序#include #include #include #include using namespace std;struct Point{ int x, y, z;};s原创 2012-05-10 01:54:01 · 697 阅读 · 0 评论 -
hdoj 1072 Nightmare 宽度优先遍历
题目大意:在迷宫中有一个炸弹,过六个单位时间就会爆炸,要你求一个起点到迷宫的终点的最短距离,迷宫中有时间重置器,当你走到这个格子,炸弹的爆炸时间重新置为0,迷宫中标识为墙壁的格子不能走,到达任意一个格子时,炸弹计数器为0时,则失败解题思路:最短距离,就想到用宽度优先遍历,但是要一个辅助的数组来保存每个格子的时间信息。之前受hdoj 1242的影响,认为格子保存的是当前走过路程的最小值,w了原创 2012-05-12 19:41:11 · 1570 阅读 · 0 评论 -
hdoj 1242 Rescue
题目大意:一个迷宫,多个朋友去解救一个人,#表示障碍,不能走,r表示朋友,x表示守卫,走到这位置得消耗2个单元,其他只消耗一个单元,a表示要解决的人。求多个朋友解救到这个人的最短时间解题思路:因为有多个起点,我们可以反过来以a为起点,求到达任意一个r的最短时间。用宽度优先遍历。。。。但是有x节点,消耗2个时间单元,所以保存每次走过的格子状态,即每个格子当前能到达的最短时间。宽度优先遍历原创 2012-08-24 16:13:28 · 451 阅读 · 0 评论 -
hdoj 1312 Red and Black
题目大意:一个人站在一块黑色瓷砖上,他只能向四个方向走,不能走到红色瓷板上,求能走过的黑色瓷板,走过了的黑色瓷板不算解题思路:bfs, dfs均可,,,,水题BFS:#include #include #include #include #include #include using namespace std;struct node{ int x, y;};原创 2012-08-24 17:32:57 · 489 阅读 · 0 评论 -
hdoj 1253 胜利大逃亡 宽度优先遍历
题目大意:3维空间找最短距离,加了个时间约束条件解题思路:这题算是水题了,最短距离,宽度优先遍历就可以了,加个时间约束条件,到达那个时间的节点就不扩展了之前没剪枝,超时了,网上有人不剪枝就过了,可能是因为使用了标准库的队列的缘故,超时后然后加个剪枝,对些当前节点到最终节点经过的格子数超过剩余时间的节点剪枝最终过了,不过时间消耗也很大。。。。。#include #include原创 2012-05-14 01:44:39 · 735 阅读 · 0 评论 -
hdoj 1372 Knight Moves
题目大意:国际象棋骑士从起点到终点的最少步数解题思路:水题.....宽度遍历#include #include #include #include #include #include using namespace std;struct node{ int x, y, step;};const int maxn = 8;bool square[maxn][max原创 2012-08-25 00:15:45 · 541 阅读 · 0 评论 -
hdoj 1312 Red and Black 深度遍历的实现
题目大意:一个人站在一块黑色瓷砖上,他只能向四个方向走,不能走到红色瓷板上,求能走过的黑色瓷板,走过了的黑色瓷板不算深度遍历,记录走过的格子#include #include #include #include #include #include using namespace std;struct node{ int x, y;};const int maxn原创 2012-08-25 15:55:37 · 588 阅读 · 0 评论 -
hdoj 1241 Oil Deposits
题目大意:@表示油田,求一共有多少组油田是连通的,连通的意思是与@的八个方向相邻解题思路:水题。。用深度优先遍历每个点,每走过了一个油田就标记为走过了。#include #include #include using namespace std;const int maxn = 110;char field[maxn][maxn];int dir[8][2] = {{1,原创 2012-08-24 15:14:03 · 696 阅读 · 0 评论 -
hdoj 1240 Asteroids!
题目大意:求3维空间的起点到终点的最短距离,中间有障碍X的点不能走。解题思路:水题。。。。。宽度优先遍历#include #include #include #include using namespace std;struct node{ int x, y, z, step;};const int maxn = 11;char space[原创 2012-08-24 14:34:40 · 642 阅读 · 0 评论 -
zoj 2110 hdoj 1010 深度遍历+奇偶性剪枝
题目大意:要你求一个迷宫中,起点s经过给定的步数是否能到终点t,迷宫中有挡板,挡板是不能走的格子解题思路:很明显的搜索题,用深度优先或宽度优先遍历搜索是否满足,给定步数,也就是求起点根结点到终点最终解的那个搜索树经过的边树深度优先遍历,要用到奇偶性剪枝,开始不知道啥叫。。。。奇偶性剪枝,看了这哥们的博客才明白:详情见:http://www.cppblog.com/Geek/arch原创 2012-05-08 00:55:16 · 1081 阅读 · 0 评论 -
poj 3083
题目大意:给一个迷宫,要你分别求出按先考虑左边的方向,和先考虑右边方向走出迷宫所经过的格子,还有走出迷宫经过的最少格子解题思路:题目不难,比较繁琐,就是深度优先左边遍历和深度优先右边遍历还有就是广度优先遍历迷宫深度优先遍历和宽度优先遍历时,要区分从上一个格子过来的方向来判断下一个格子的左边右边是哪个格子 #include #include #include #inclu原创 2012-05-09 02:18:42 · 1158 阅读 · 0 评论 -
poj 1562 深度优先遍历
水题。。。。。题目大意:@表示油田,油田的周围8个方向有@则认为这两个油田是一个,要你求一共有多少油田解题思路:就是求多少个连通分量,顺序扫描,每扫面到一个@,并且这个格子没有被深度遍历遍历过,就进行一次深度优先遍历,遍历的次数就是分量个数#include #include #include using namespace std;const int max原创 2012-05-10 02:38:57 · 956 阅读 · 0 评论 -
hdoj 1242 宽度优先
题目大意:有一个人关在监狱里,他有很多个朋友要去救他,求这些朋友救到他花费的最短时间,碰到警卫,他们就杀死警卫,要花费两个时间值解题思路:看到最短消耗时间,想到了bfs,有因为有多个朋友r去解救Angel,所以想到以Angel的位置为起点,bfs求到任意一个朋友的位置花费最小的时间,之前直接就这么用bfs结果错了,忽略了碰到警卫是花费两个时间值,而直接走只花费一个时间值,所以还得改造下。用一个原创 2012-05-11 02:23:16 · 971 阅读 · 1 评论 -
poj 1979 bfs
题目大意:求从起点开始能够经过的黑格子的数目,红格子不能走,走的过程中,格子可以重复经过解题思路:水题~~bfs,只要求出bfs能扩展的节点数就是格子数目#include #include #include #include using namespace std;const int maxn = 21;struct node{ int x,原创 2012-05-15 01:41:37 · 693 阅读 · 0 评论 -
poj 2243 双向bfs和A*
题目大意:就是给你一个起点和一个终点,按骑士的走法,从起点到终点的最少移动多少次解题思路:水题~~~直接bfs就可以了,没写过双向bfs,这次训练一下,双向bfs就是用两个队列,一个队列保存从起点开始的状态,另一个保存从终点开始向前搜索的状态,双向bfs主要是区分每个格子是从起点开始搜索到的还是从终点开始搜索到的~每个经过的格子结点保存到达该格子经过的步数,这样两边要是相交了相加就是结果另原创 2012-05-16 01:57:39 · 2147 阅读 · 3 评论 -
zoj 1004 深度优先遍历
题目大意:两组数,第一组字符串通过压栈弹栈顺序,得到第二组数据,输出压栈弹栈顺序,解有多个,按照字典序输出解题思路:深度优先遍历,借助一个栈来保存第一个字符串压栈的状态,优先考虑压栈操作,注意的是边界条件,满足第二个字符串扫描到尾部时,输出结果#include #include #include #include using namespace std;const原创 2012-05-18 01:26:06 · 861 阅读 · 0 评论 -
zoj 1457 求素数环
题目大意:是求一个素数环解题思路:简单的dfs,卡在求最后一个数,它不光与1相加为素数和后面的那个数相加也得为素数,漏了后面那个,wa了好几次。另外要是n为奇数不能成为素数环,因为奇数的个数比偶数多一个,所以至少会有一对相邻的两个数是奇数,这两个数的和不可能是素数。#include #include #include #include using namespace s原创 2012-05-16 23:49:42 · 1260 阅读 · 0 评论 -
poj 1198 || zoj 1505 || hdoj 1401 双向宽度遍历
参考了:http://blog.csdn.net/zxy_snow/article/details/6844220题目大意:给出两个棋盘布局,问第一个棋盘布局,移动不超过8步,是否能到达第2个棋盘布局,移动棋子时,要是相邻的格子有棋子,而再过去没有棋子,则可以跳过这个棋子到达下一格解题思路:双向宽度遍历,因为到达最终状态的布局,所以可以从最终状态反向走到达,因为最多不超过4步,那么从开始状转载 2012-05-20 11:47:59 · 1000 阅读 · 0 评论 -
hdoj 1427 24点游戏
题目大意:给一组数,问这组数通过加减乘除4则运算结果是否为24解题思路:《编程之美》上面的解法~~每次选取两个数做加减乘除,比如(a,b,c,d)选a,b两个数做加法,那么形成了(a+b,c,d)然后继续递归,其他的四则运算一样,加法和乘法满足交换律。方法一:171MS460K2372 B#include #include #incl原创 2012-06-17 02:10:25 · 784 阅读 · 0 评论 -
poj 1010 邮票问题
http://blog.csdn.net/ju136/article/details/6969826http://angels1.0.blog.163.com/blog/static/8458050420087414056738/题意: 给出n种邮票,每种邮票有自己的面值(面值可能重复) 指定m种“总面值”,对每种“总面值”,求解满足如下条件的组合以达到该“总面值”(1)所转载 2012-08-25 15:53:16 · 763 阅读 · 0 评论