果枫-国峰

随笔分类 -  BFS广度优先搜索

hdu 1254 需注意的地方
摘要:题意:如题所说。注意:1.要考虑人是否能走到推箱子的地方 2.箱子经过的格子可以再次经过,而箱子经过同一个格子从同一个方向来的只能有一次 3.人不能穿过箱子解法:BFS+BFSAC代码:View Code //bfs+bfs#include<iostream>#include<queue>using namespace std;#define mem(x,y) memset(x,y,sizeof(x));//牛b的数组初始化,网上学的const int M=25;int useb[M][M][4],used[M][M];//用作标记useb[][][]之所以是三维数组是 阅读全文

posted @ 2012-09-05 15:36 果枫-国峰 阅读(200) 评论(0) 推荐(0)

hdu 杭电 1242 Rescue
摘要:题意:从a开始,找到r所需的时间(r可以有多个,找到第一个输出所需的时间即可),‘#’是墙不可走, 经过‘.’时间加1,经过‘x’时间加2.解法:广搜,使用优先队列,队列中的首元素都为队列中step最小的一个元素。注意:r可以有多个。ac代码:View Code #include<iostream>#include<queue>using namespace std;const int M=200+10;char map[M][M];//地图int use[M][M];//用作标记int nn[4][2]={0,1,-1,0,0,-1,1,0};//方向向量:左,上,右 阅读全文

posted @ 2012-08-31 19:50 果枫-国峰 阅读(217) 评论(0) 推荐(0)

hdu 杭电 2216 Game III
摘要:题意:Z每走一步S就要往相反的方向走一步(所走的那步假如是墙,或者出界,S不动)如果能找到S请输出最小的步数,不能输出“Bad Luck!”解发:广搜,vis[][][][]标记Z,S已走过的路。注意:特别要注意,此题的地图必须用gets()或scanf(“%s”)输入,其中的缘由本人也不知,但我已经故意尝试用cin输入地图,但结果是wa。代码后有大量的测试数据,测试结果运行我的代码即可。ac代码:View Code #include<iostream>#include<queue>using namespace std;const int m=22;char map[ 阅读全文

posted @ 2012-08-31 19:47 果枫-国峰 阅读(138) 评论(0) 推荐(0)

hdu 杭电 1312 Red and Black
摘要:题意:W H分别代表图的列与行,图中有'.' '#' '@'从@的位置出发最多能搜到多少个‘.’,‘#’为障碍物。解法:广搜ac代码:View Code #include<iostream>#include<queue>using namespace std;const int M=20+3;char map[M][M];//地图bool use[M][M];//用作标记int v[4][2]={-1,0,0,-1,1,0,0,1};//方向向量:左,上,右,下struct que{ int i,j;};int main( 阅读全文

posted @ 2012-08-31 19:45 果枫-国峰 阅读(151) 评论(0) 推荐(0)

hdu 杭电 1241 Oil Deposits
摘要:题意:找图中没有连在一起的'@'的个数。解法:广搜ac代码:View Code #include<iostream>#include<queue>using namespace std;const int M=100+10;char map[M][M];//地图bool use[M][M];//用作标记int vec[8][2]={-1, 0,-1,-1,0,-1,1,-1,1, 0,1, 1,0, 1,-1,1};//方向向量:左,左上,上,右上,右,右下,下,左下struct que{ int i,j;};int main(){ int m,n; i 阅读全文

posted @ 2012-08-31 19:45 果枫-国峰 阅读(116) 评论(0) 推荐(0)

hdu 杭电 1495 非常可乐
摘要:题意:容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,101>S>0,N>0,M>0) 。能平分的话请输出最少要倒的次数,否则输出"NO"。解法:广搜,每一个队头元素都要进行6次操作,如图进行了n->m一次操作:对应的6中操作(S->N,S->M,N->S,N->M,M->S,M->N)此图必须注意:n,m的意思为:瓶子n中此刻存在的可乐量为n,瓶子m中此刻存在的可乐量为m注意:从一个瓶倒进另一个瓶时必须分两种情况,1:能装满 阅读全文

posted @ 2012-08-31 19:43 果枫-国峰 阅读(520) 评论(0) 推荐(0)

hdu 杭电 1728 逃离迷宫
摘要:题意:m × n (m行, n列)的迷宫,给你两个坐标A(x1,y1),B(x2,y2),从A->B转过的最少弯数是否满足条件 满足输出“yes”,否输出“no”解法:广搜,特别注意:走过的点绝不可以标记,原因:如图三点1,2,3,假设1转弯数为5方向向下,2的转弯数为6方向向右,假设此时点2在队头,点2先搜到点3,如果把3标记,点3的转弯数为6,点1不能搜到点3,导致点3的转弯数不是最小,结果不言而知的wa。 很多人说用优先队列,但这题只要你标记了即使用优先队列还是不行,原因:假设1转弯数为5方向向右,2的转弯数为5方向向右,1,2的转弯数都为5都可在队头,假设此时点1在队头 阅读全文

posted @ 2012-08-31 19:41 果枫-国峰 阅读(768) 评论(0) 推荐(0)

hdu 杭电 1253 胜利大逃亡
摘要:题意:从,左上后角->右上前角,的最短时间是否满足题目给出的时间,满足输出最短时间,否输出-1. 输入数据比较难理解: A B C可以理解为对应输入的A->x轴的单位长度,B->z轴的单位长度(方向向向下),C->y轴的单位长度. 注:左上后角作为坐标原点。3 3 4 200 1 1 10 0 1 10 1 1 1//第一块1 1 1 11 0 0 10 1 1 1//第二块0 0 0 00 1 1 00 1 1 0//第三块解法:广搜,队列峰注:进队列后必须马上标记。ac代码:View Code #include<iostream>#include< 阅读全文

posted @ 2012-08-31 19:39 果枫-国峰 阅读(179) 评论(0) 推荐(0)

导航