随笔分类 - 搜索-A*
摘要:题目链接 有一个n*m(1<=n,m<=20)的网格图,图中有k堵墙和有一条长度为L(L<=8)的蛇,蛇在移动的过程中不能碰到自己的身体。求蛇移动到点(1,1)所需的最小步数。 显然用8个(x,y)来表示蛇的状态是不现实的(用哈希也很难存下,要么爆内存,要么超时),所以首先应当进行状态压缩。可以发现
阅读全文
摘要:题目链接 挺有意思但是代码巨恶心的一道最短路搜索题。 因为图中的结点太多,应当首先考虑把隐式图转化成显式图,即对地图中可以相互连通的点之间连边,建立一个新图(由于每步不需要每个鬼都移动,所以每个点需要向自己也连一条边)。设d[i][j][k]为走到“A在结点i,B在结点j,C在结点k”的状态需要多少
阅读全文
摘要:题目链接 题意:求有向图从s点到t点的第k短路,每个点可以重复经过。 解法:建一个正向图和一个反向图,先用Dijkstra求出反向图中从t点到其他点的最短距离dis,再用A*算法求出第k短路。 A*求第k短路的方法:与Dijkstra算法类似,设结点nd(u,g)表示当前所在点为u且从s到u经过的长
阅读全文

浙公网安备 33010602011771号