搜索
文章平均质量分 70
爱生活爱丙妍
这个作者很懒,什么都没留下…
展开
-
HDU 1242 BFS+优先队列
优先队列(priority_queue)的基本操作: empty(); 队列为空返回1 pop(); 出队 push(); 入队 top(); 返回队列中优先级最高的元素 size(); 返回队列中元素的个数 需要注意的是这题宽搜时存在障碍物,遇到’x’点是,时间+2,如果用普通的队列就并不能保证每次出队的是时间最小的元素,所以要用优先队列原创 2015-08-07 16:10:09 · 285 阅读 · 0 评论 -
hdu 1495 非常可乐
题目大意:中文题- - 解题思路:跟poj3414类似,题目本身不难,只是需要列举的状态比较多,用bfs,把情况列举出来就行了。 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 代码: #include #include #include using namespace std; int m,n,s; struct node {原创 2015-09-16 20:16:35 · 342 阅读 · 0 评论 -
uva 11624 Fire
题目大意: 一个平面迷宫中有一个人,迷宫中有些点起火了,火和人每个单位时间只能向相邻的格子移动,其中有一些空间被墙壁占据,问这个人在不背或烧到的情况下,离开迷宫的最快时间。 大部分人用两个bfs,我觉得一个就行,先把起火点压入队列(起火点可能有多个),最后把人压入队列,bfs即可,第一道没看别人博客写的- -; ps:由于dir数组初始化赋值弄错了,以至于看了两天,怎么看都觉得挺原创 2015-09-14 18:29:52 · 373 阅读 · 0 评论 -
poj 3984 迷宫问题
题目大意:中文题- -; 解题思路:用数组模拟队列,记一下每一个元素上一个元素位置就可以了; 链接:http://poj.org/problem?id=3984 代码: #include using namespace std; int map[6][6]; int dir[4][2]= {1,0,-1,0,0,1,0,-1}; struct node { int x,y;原创 2015-09-14 20:49:01 · 325 阅读 · 0 评论 -
poj 1321 棋盘问题
题意很简单- -; 解题思路:dfs搜索,逐行搜索,但需要注意当n!=k时,搜索完需要从当前行下一行继续搜索,具体见代码; 代码: #include #include using namespace std; char map[10][10]; int col[10];//列标记数组; int k,n; int cnt; void dfs(int row,int num) { i原创 2015-09-07 18:35:12 · 204 阅读 · 0 评论 -
fzu 2150 Fire Game
题目大意:两个熊孩子点草烧,#代表草,求烧完全部需要的最小时间,点不完所有的输出-1; 解题思路:由于数据小,所以可以枚举两个燃烧点,压入队列,求出最小时间; 代码: #include #include #include #include using namespace std; const int maxn=0xfffffff; int n,m,t; char map[210][2原创 2015-09-11 19:23:44 · 273 阅读 · 0 评论 -
poj 3278 简单搜索bfs
题目链接:http://poj.org/problem?id=3278 题目大意:给出两个数n,k;经过两种操作使n成为k所需要的步数;操作1:n=n+1或n=n-1;操作2:n=n×2; 解题思路:用bfs搜索,vis数组标记状态同时记录到当前位置所用的步数; 代码: #include #include #include using namespace std; int n,k;原创 2015-09-07 20:38:17 · 273 阅读 · 0 评论 -
poj 3414 Pots bfs
题目大意: 有二个水壶,对水壶有三种操作,1)FILL(i),将i水壶的水填满,2)DROP(i),将水壶i中的水全部倒掉,3)POUR(i,j)将水壶i中的水倒到水壶j中,若水壶 j 满了,则 i 剩下的就不倒了,问进行多少步操作,并且怎么操作,输出操作的步骤,两个水壶中的水可以达到C这个水量。如果不可能则输出impossible。初始时两个水壶是空的,没有水; 解题思路: 分别对a和b原创 2015-09-10 16:22:55 · 262 阅读 · 0 评论 -
poj 3126 Prime Path bfs
题目大意: 给定两个四位素数a b,要求把a变换到b 变换的过程要保证 每次变换出来的数都是一个 四位素数,而且当前这步的变换所得的素数 与 前一步得到的素数 只能有一个位不同,而且每步得到的素数都不能重复。求从a到b最少需要的变换次数。无法变换则输出Impossible。 解题思路: 数组模拟队列,先打出10000以内的素数表,然后bfs搜索每一位变化后是否为素原创 2015-09-08 21:37:27 · 239 阅读 · 0 评论 -
hdu 1241 深搜水题
Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Description The Ge原创 2015-09-02 21:19:15 · 262 阅读 · 0 评论 -
poj 3087 Shuffle'm Up
题目大意: 已知两堆牌s1和s2的初始状态, 其牌数均为c,按给定规则能将他们相互交叉组合成一堆牌s12,再将s12的最底下的c块牌归为s1,最顶的c块牌归为s2,依此循环下去,现在输入s1和s2的初始状态 以及 预想的最终状态s12,问s1 s2经过多少次洗牌之后,最终能达到状态s12,若永远不可能相同,则输出"-1"。 解题思路: 用map模拟,当a与b以前出现过,那么无解; 代码原创 2015-09-09 19:58:09 · 252 阅读 · 0 评论 -
poj 1426 Find The Multiple 简单搜索
题目大意:给定一个n,求出一个由1 0组成的十进制数是n的倍数; 解题思路:由于随便输出结果中一个,所以dfs便可以,逐步搜索; ps:每次都说是简单搜索,可每次都是看解题报告才明白- -# 注意:k和n都是long long 代码: #include using namespace std; long long n; bool flag; int i; void dfs(long原创 2015-09-08 20:26:37 · 257 阅读 · 0 评论 -
poj 2251 简单搜索bfs
题目链接:http://poj.org/problem?id=2251 题目大意: 给出一三维空间的地牢,要求求出由字符'S'到字符'E'的最短路径 移动方向可以是上,下,左,右,前,后,六个方向 每移动一次就耗费一分钟,要求输出最快的走出时间。 不同L层的地图,相同RC坐标处是连通的; 解题思路:其实就是多了两个方向,map数组开诚三维的就行了; 代码:原创 2015-09-07 19:54:45 · 244 阅读 · 0 评论 -
hdu 1010 dfs+剪枝
思路:剪枝+dfs 第一个剪枝我们可以想到,当剩下的步数大于剩下的时间的时候,狗是不能走到的; 接下来我们来第二个剪枝: 我们把map的奇偶性以01编号: 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 我们发现从0走一步一定走到1,从1走一步一定走到0。 也就是说,如果当前的狗所在的坐标原创 2015-08-06 10:01:54 · 249 阅读 · 0 评论 -
poj 2386 深搜水题
题目大意:统计有多少个'W'连通块; 代码: #include #include using namespace std; int dir[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}}; int vis[101][101]; char map[101][101]; int n,m; void dfs(int x,原创 2015-08-17 18:05:09 · 322 阅读 · 0 评论 -
hdu 1312 深搜
Red and Black Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Descript原创 2015-08-05 11:26:23 · 294 阅读 · 0 评论 -
hdu 2612 Find a way
题目大意:Y和M寻找最近的kfc(@)求最短路径是两人耗时最少; 解题思路:典型bfs,用三维数组记录@的最少步数。 注:三维数组初始化为最大值,因为可能有的@两人有人到不了; 代码: #include #include #include using namespace std; int vis[205][205]; int dir[4][2]={1,0,-1,0,0,1,0,-1}原创 2015-09-16 21:35:01 · 251 阅读 · 0 评论