随笔分类 -  BFS

Problem A: The Monocycle
摘要:uva10047:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=988题意:题目意思比较绕,就是给出图,从起点'S'出发,到终点'T... 阅读全文

posted @ 2014-05-28 19:27 天依蓝 阅读(156) 评论(0) 推荐(0)

Fire!
摘要:uva11624:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=2671题意:一个大火蔓延的迷宫。Joe每分钟可以走到上下左右4个方... 阅读全文

posted @ 2014-05-28 19:21 天依蓝 阅读(188) 评论(0) 推荐(0)

Pots
摘要:poj3414:http://poj.org/problem?id=3414题意:给你两个罐子的体积,然后让你只用这两个罐子量出给定k体积的水。题解:这里可以把两个罐子看成是一个二维的图,然后体积的水就是图中其中一个坐标是k的点。可以直接BFS,每次操作就相当于从当前的点向外扩展,并且记录当前的路径,即可。其中可以用1,2,3,4,5,6六个数字来分别对应六种操作,然后用一个int类型的数组记录路径就可以。#include#include#include#include#includeusing namespace std;struct Node{ int counts1;//第一个pot中. 阅读全文

posted @ 2014-01-25 23:04 天依蓝 阅读(275) 评论(0) 推荐(0)

Prime Path
摘要:poj3126:http://poj.org/problem?id=3126题意:给你两个数n,k,两个数都是四位数的素数。现在让你改变n的一位数,让n变成另外一个素数。然后把这个素数在改变其中的以为又变成一个新的素数,问你最少有这样变换几步,才能使得使他变成k。题解:求最短的问题,很自然的就想到了BFS,此外这一题还要处理10000以内的素数,可以采用素数筛法。#include#include#include#include#includeusing namespace std;int prime[100001];//标记该数是不是素数struct Node{ int x; int step 阅读全文

posted @ 2014-01-24 16:40 天依蓝 阅读(494) 评论(0) 推荐(1)

Catch That Cow
摘要:poj3278:http://poj.org/problem?id=3278题意:给你一个n和k,n可以加1也可以减1,还可以乘2,现在要求n经过这样的几步变换可以使得n==k;求得最小的步数。题解:一开始我也不知道怎么办,准备用深度优先搜,但是自己没打出来,后来看了网上题目归类是BFSBFS,马上懂了,就是一个3入口的BFS。裸题。不过要注意0*2的情况。#include#include#include#include#includeusing namespace std;int n,k;int counts[100002];struct Node { int x; int step; .. 阅读全文

posted @ 2014-01-23 19:53 天依蓝 阅读(265) 评论(0) 推荐(0)

Dungeon Master
摘要:poj2251:http://poj.org/problem?id=2251题意:给你一个三维的立方体,然后给你一个起点,和终点的坐标。然后让你求从起点到终点的最短路程。题解:该题就是求三维的最短路,可以采用BFS,三维的BFS。#include#include#include#include#includeusing namespace std;int counts[32][32][32];//记录到起点的最短距离struct Node{ int x; int y; int z; int step;};int n,m,l;//长,宽,高char map1[32][32][32... 阅读全文

posted @ 2014-01-22 21:30 天依蓝 阅读(374) 评论(0) 推荐(0)

Multiple
摘要:poj1465:http://poj.org/problem?id=1465题意:给你一个数n(0~4999);以及m个不同十进制的数,问有这些十进制数组成的最小的n的倍数是多少。如果有则输出,没有就输出0;题解:此题用BFS 。。这个题好在 用 余数判重剪枝。。BFS 如果不加以剪枝,一定会搜索的情况会很庞大。所以应该用余数判重 。为什么可以用余数判重? A=a*N +e 即A%N =e B= b*N+e即B%N=e当A B mod N的余数相同时,如果先出现A 。在A 后加上一个数 i 时 , 新的数 C = 10 *a*N + 10 *e+i;同样 B后加上数 i 时 , D = 10* 阅读全文

posted @ 2013-10-13 11:10 天依蓝 阅读(338) 评论(0) 推荐(0)

Rescue
摘要:hdu1242:http://acm.hdu.edu.cn/showproblem.php?pid=1242题意:给你一个n*m的矩阵,代表n*m个方格,每个方格可能是a,你的目的地,r你的起点,x警卫,#墙壁‘。’道路。每次你只能走一步,上下左右,且每一步花费一分钟,如果有路可以直接走,如果是x就必须杀死他才能走,且杀死他也要花费一分钟,遇到墙壁就不能走问你从起点到终点,最短的时间,如果不能就输出那么一句话。题解:用bfs,广收。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace st... 阅读全文

posted @ 2013-10-13 11:07 天依蓝 阅读(228) 评论(0) 推荐(0)

Knight Moves
摘要:poj2243:http://poj.org/problem?id=2243题意:给定象棋棋盘上的两个位置a,b,计算马从a到b所需要的步数的最小值。题解:把整个棋盘看成一个二维的图,a,b相当于两个点,然后做bfs即可 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 struct Node{ 8 int x; 9 int y; 10 int step; 11 }; //记录当前节点的坐标以及到起点的步数 12 13 int map[9][9]; //记录地... 阅读全文

posted @ 2013-10-13 11:02 天依蓝 阅读(185) 评论(0) 推荐(0)

Basic Wall Maze
摘要:poj2935:http://poj.org/problem?id=2935题意:在6*6的格子中,有一些,如果两个格子之间有墙的话,就不能直接相通,问最少要经过几步才能从起点走到终点。并且输出路径。题解:直接bfs 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 struct Node{ 8 int sal; 9 char path[50]; 10 11 }; //用来记录当前节点的到起点的最小值以及取得这个最小值所对应的路径 12 int sx ,sy... 阅读全文

posted @ 2013-10-13 10:56 天依蓝 阅读(171) 评论(0) 推荐(0)

导航