我正在尝试使用动态编程来解决点游戏的变体。
常规点游戏用点线进行。每个玩家在他们各自的一端获得一个或两个点,并且没有点的人可以获胜。
在此版本的游戏中,每个点都有不同的值。每个玩家轮流进行交替,并在该线的任一端采用任意一个点。我想想出一种方法来使用动态编程来找到第一个玩家保证获胜的最大金额。
我在抓住这个问题并试图为解决方案写一个重复时遇到了问题。感谢任何帮助,谢谢!
答案 0 :(得分:4)
请查看此网站:http://people.csail.mit.edu/bdean/6.046/dp/,尤其是问题编号10:
游戏的最佳策略。考虑一排n个值为v(1)... v(n)的硬币,其中n为偶数。我们通过轮流交替对抗对手。在每个回合中,玩家从行中选择第一个或最后一个硬币,永久地从行中移除它,并接收硬币的值。如果我们先行动,确定我们绝对可以获得的最大可能金额。
如果我正确阅读你的帖子,这正是你想要的。解决方案非常简单,我认为它的解释非常好。