![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
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 · 431 阅读 · 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 · 451 阅读 · 0 评论 -
hdu1180(BFS)
题目链接 诡异的楼梯 5 5 **..T **.*. ..|.. .*.*. S.... 如图所示的地图,|代表楼梯,每分钟移动一次方向,只能顺着楼梯的方向走,每次可以在 . 或S或T处停留,求从S到T的最小步数 没有什么难度,在楼梯的地方模拟清楚就行,把方向的各个情况弄清楚 记录时间差,判断到达楼梯时的方向, 当是|的时候,只能沿着上下方向走, 当是—时只能沿着原创 2016-12-09 17:02:39 · 737 阅读 · 0 评论 -
hdu1072 bfs+剪枝(每一点可重复走过)
题目链接 Nightmare 炸弹爆炸的限时是6s,一步减掉1s,在'4'方块上炸弹爆炸时间重置为6s 但是走到'4'和终点时的剩余时间必须大于0 最短路径:bfs 注意每点可以重复走过,必须剪枝,否则就停不下来了 如果第二次走过‘1’时,bomb的剩余时间比之前更短,那就不用走了,不值得 第二次走过'4'时,虽然bomb可以重置为6,但是step肯定变大了,所以也不用原创 2016-11-18 09:53:12 · 404 阅读 · 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 · 1273 阅读 · 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 · 611 阅读 · 0 评论