在视频游戏中,有N个等级,每个等级都要求你有一定的能量才能赢得那个等级。你以0级能量开始游戏,每次你赢得一个等级,你就会花费等级所需的能量(你的能量不能低于0)。此外,每个级别都有0,1或者更多的商店以成本C销售能量E.如果你发现自己没有足够的能量通过一个级别,你输了,因为你不能从以前的水平购买其他商店。每当你从商店购买时,你的新能量就是E(商店出售的那种能量),也就是说,它并不总和你以前的能量。
问题:赢得所有N级所需的最低资金是多少? (假设钱是无限的,你可以买到你想要的所有商店,......但我想优化它以便它只购买必要的商品)
我有兴趣知道如何为此找到解决方案。解决这类问题的任何解决问题的技术,如果是这样,你能解释一下吗?我是否应该先研究类似的已知问题?
我尝试使用递归回溯,希望找到重叠状态并使用动态编程,但我没有找到它们。我的州在哪里:对于所有商店,叉两个分店......购买商店,或者没有。
答案 0 :(得分:0)
这是一个相当容易的问题,因为能量并不总和。这意味着你在N级购买后的能量E(N)并不取决于你在0级N-1级别所做的事情。这也意味着你可以倒退;你能买到能量的最后一批商店到底是什么时候?对于每个候选人,他们面前的商店有哪些必须购买能源才能到达最后一家商店?