地图中有K种物品,
1.空载情况下每走一步用能量1
2.取得物品i需要能量Ai
3.每取得一个物品, 每走一步的能量需要加Bi
4.*为起点,图中不能经过*,取得K种物品后返回*
问能否用不大于P的能量取得K种物品
PS: 条件4,在求得起点到所有点的最短路径后,要将*看作#,然后重新计算每对点对的最短路径.
状态f[s][i][j] , s为二进制状态,最后取得第i种物品中编号为j的物品的最短路径.
f[s][i][j] = min(f[s - (1 << k)][i0][j0] + d[i][j][i0][j0] * (1 + C[s - (1 << k)]) + A[k]),
其中(s >> k)&1 == 1, (s >> i0)&1 == 1, k != i0,
d[i][j][i0][j0]为第i种物品编号j到第i0种物品编号j0的距离,
C[s]记录状态s的每走一步需要的能量