bfs
码不停Tick
这个作者很懒,什么都没留下…
展开
-
UVA816 紫书bfs
本题比较困难的地方对于我来说应该是输入,后来参考了别人的代码原来还有stringstream这么好用的东西还有就是方向的处理上面,lrj的方法比较巧妙,他是把方向全部转化成0-3然后一一对应数组中的元素 #include//不需要判断边界、移动方向已经确定#include#include#include#include#includeusing namespace std;i原创 2017-08-27 22:36:54 · 390 阅读 · 1 评论 -
hdu1495 隐式图bfs
题意:中文思路:这道题思路还是比较明显的,不过有几个地方可以剪枝,降低复杂度。初始状态(s,0,0)目标状态(1/2s,1/2s,0)。每次操作其实无非(s->a,s->b,a->b,a->s,b->s,b->a) 虽然如此,自己做的时候还是卡在了自己捉急的编程技巧上。下面附上自己tle的代码和别人的ac代码。tle:#include<cstdio>...原创 2018-03-29 13:35:38 · 198 阅读 · 0 评论 -
uva1599 双向bfs+路径字典序输出
题意:紫书上有。思路:首先逆向bfs一遍,求出其他所有点到终点的最短距离。然后正着bfs一遍,每次选择和当前节点到终点距离少1的点,且更新这一步的所选择的颜色。第二个bfs参考别人的代码,有一个非常巧妙地写法:用path【i】表示,走第i步时所选择地最小颜色。这样打印路径直接按照步数打印就可以了(其他方式地打印都很麻烦)。本题有一个特别需要注意地地方:字典序最小是整体的,因此不能单单判断到某个点的...原创 2018-03-11 16:40:37 · 351 阅读 · 0 评论 -
poj3414 bfs+路径打印
題目大意:给出2个水杯和目标的容量,输出经过fill drop pour三种操作的最少步数。这题思路还是比较清晰的,可是就是不知为什么mle了,找不出来问题,先码着放这里,有空回来看。mle:#include#include#include#include#include#include#include#define inf 0x3f3f3f3fusing namesp原创 2018-01-19 10:06:12 · 234 阅读 · 0 评论 -
三维bfs
poj2251其实和普通的bfs没有太大区别,就多了上下两个方向,不过初始化数组时一定要注意哪一维对应那一层。#include#include#include#include#include#define inf 0x3f3f3f3fusing namespace std;const int maxn=35;int l,r,c,mins;char g[maxn][maxn原创 2018-01-14 02:56:12 · 361 阅读 · 0 评论 -
图的色数问题整理(未完待续......)
最近离散在讲图的色数问题,顺便做了几道题。前面两道题代码主要参考刘汝佳的紫书的dp。后面一题为cf上的求三个链节点的图的色数(前面只是两个相邻节点),用dfs或者bfs遍历全图实现。具体下面分析。先是poj的1129,可以说是两个邻接点的图的色数的裸题。数组讲道理应该开到1代码:#include#include#include#include#include#define I原创 2017-12-18 11:42:18 · 2370 阅读 · 0 评论 -
uva816 abbots的复仇 bfs+方向朝向
#include#include#include#include#include#include#includeusing namespace std;const int maxn=10;const char* dir="NESW";///不能是(NEWS),这样下面的walk里面的求余才能对应到对应的位置const char* turn="FLR";const int dr原创 2017-11-14 15:40:55 · 300 阅读 · 0 评论 -
比较重量(华为面试题改)链式前向星的使用+bfs
链接:https://www.nowcoder.com/questionTerminal/ac27e60e63b549d6a9b59f815d9bc6e2来源:牛客网小明陪小红去看钻石,他们从一堆钻石中随机抽取两颗并比较她们的重量。这些钻石的重量各不相同。在他们们比较了一段时间后,它们看中了两颗钻石g1和g2。现在请你根据之前比较的信息判断这两颗钻石的哪颗更重。给定两颗钻石的编原创 2017-09-21 21:56:58 · 425 阅读 · 0 评论 -
uva1600 (bfs迷宫)
先贴上AC代码#include#include#include#include#includeusing namespace std;const int maxn=30;const int block=1;int maze[maxn][maxn];int r,c,k;int dx[]={1,-1,0,0};int dy[]={0,0,1,-1};struct node{原创 2017-09-16 10:09:07 · 306 阅读 · 0 评论 -
八数码 IDA* A *比较总结 HDU1043 POJ1077
这是一个经典的搜索题,做法很多可以详见此题的八境界做法,这里只阐述A*与IDA*算法。 A*算法: 简单来说是带估值函数的广搜。不同之处在于:对每个放入队列(open table)的节点计算估值函数h(x),然后进行排序。这样出队时的顺序就不是自然顺序,而是有导向性的一个顺序,这样可以比直接搜索能更快的到达目标节点。 缺点:A*算法与bfs一样,都是搜索当前节点下...原创 2019-03-17 23:41:33 · 377 阅读 · 0 评论