我指的是练习题中的Shopping Plan problem。这是指向the solutions page的链接。
答案 0 :(得分:2)
如果不查看解决方案,这似乎是标准DP。
每个州都有待购买的商品列表(2^15
组合)和汽车的当前位置(50
商店+ 1
原始位置= 51
可能的选择)。
从一个州过渡到另一个州很容易。
def minCost(itemsLeft, currentPosition)
current_minimum = INFINITY
for (each store in the list) {
if (store.containsSomeOf(itemsLeft)) {
candidate = minCost(itemsLeft - store.items, store)
+ cost_of_items_bought_at_store + cost_of_driving
current_minimum = min(current_minimum, candidate)
}
}
return current_minimum
end
当然,itemList
表示为位掩码,而不是实际列表。
你也需要考虑易腐物品,但这纯粹是技术性的。
最后,您需要将memoization应用于递归或将其重写为纯DP。