bfs
文章平均质量分 84
pmt123456
这个作者很懒,什么都没留下…
展开
-
hdu1044(bfs+dfs/bfs+状态压缩)
1.状态压缩记录状态,用十位的二进制数表示每个宝石选还是不选,共有2^10=1024个状态,开个数组vis[maxn][maxn][1024]判断在每一点是否达到该状态,bfs搜索最短路径,W*H*1024个状态都要搜到,复杂度较高#include #include #include using namespace std;int W, H, L, M;bool vis[55][55原创 2016-10-29 11:11:10 · 419 阅读 · 0 评论 -
hdu1226
题目链接:超级密码题目大意:找出最小的一个数,满足由给定的(1)m个数字组成(有些数字可以不用)(2)可以整除一个数n由于最多可以有500位数,每个数字最多有16种情况,单纯暴力肯定会TLE.--》bfs用bool num[16]记录给出的m个数字,一步步遍历由于数字位数大,用大了大数求余int mod(const node &cur){ int tmp=原创 2016-12-18 15:40:26 · 446 阅读 · 0 评论 -
hdu1180(BFS)
题目链接 诡异的楼梯5 5**..T**.*...|...*.*.S....如图所示的地图,|代表楼梯,每分钟移动一次方向,只能顺着楼梯的方向走,每次可以在 . 或S或T处停留,求从S到T的最小步数没有什么难度,在楼梯的地方模拟清楚就行,把方向的各个情况弄清楚记录时间差,判断到达楼梯时的方向,当是|的时候,只能沿着上下方向走,当是—时只能沿着原创 2016-12-09 17:02:39 · 730 阅读 · 0 评论 -
hdu1072 bfs+剪枝(每一点可重复走过)
题目链接 Nightmare炸弹爆炸的限时是6s,一步减掉1s,在'4'方块上炸弹爆炸时间重置为6s但是走到'4'和终点时的剩余时间必须大于0最短路径:bfs注意每点可以重复走过,必须剪枝,否则就停不下来了如果第二次走过‘1’时,bomb的剩余时间比之前更短,那就不用走了,不值得第二次走过'4'时,虽然bomb可以重置为6,但是step肯定变大了,所以也不用原创 2016-11-18 09:53:12 · 396 阅读 · 0 评论 -
hdu1043八数码 bfs 打表/双向bfs/A*+康托判重+逆序奇偶剪枝
写之前拜读了这篇文章:八数码的八境界个人觉得写顺序为一(可写可不写,介意找工作的的人最好试试这种写法)-->三 -->二 -->四 -> 六-->八境界一、暴力广搜+STL判重方法:setvis;set红黑树实现,查找效率log(n);总的效率nlog(n)(10^6),肯定会TLE#include #include #include #include #inc原创 2016-10-25 12:57:45 · 1267 阅读 · 2 评论 -
hdu1252(bfs)
题目链接:Hike on a Graph题目大意,给定一个图,图上有n个点(0 题目分析:裸的bfs,开一个vis[maxn][maxn][maxn]记录三个pieces到达的状态判重代码#include #include #include #include #include using namespace std;const int maxn=60;cha原创 2016-12-29 08:00:26 · 606 阅读 · 0 评论