【发布时间】:2013-05-12 02:56:36
【问题描述】:
请检查我遇到的这个问题:
“你和你八岁的侄子 Elmo 决定玩一个简单的纸牌游戏。一开始 游戏中,牌面朝上一排。每张卡价值不同的数字 的点。发完所有牌后,您和 Elmo 轮流移除最左边的或 从行中最右边的卡,直到所有的卡都消失了。在每一轮,你可以决定哪一个 两张牌拿。游戏的获胜者是获得最多积分的玩家 当游戏结束时。 从来没有上过算法课,Elmo 遵循明显的贪婪策略?什么时候? 轮到他时,Elmo 总是拿点值较高的牌。你的任务是找到策略 只要有可能,它就会击败 Elmo。 (像这样殴打一个小孩似乎很卑鄙,但是 当大人让他赢时,Elmo 绝对讨厌它。)
描述和分析一个算法,以确定给定初始卡片序列, 与 Elmo 对抗时,您可以获得的最大积分。”
我已经完成了这个问题的大部分理论工作。例如,我已经完成了 DP 所需的 optimus 子结构演示,并且我定义了递归低效形式,它解释了游戏是如何完成的。现在下一步是设计一个自下而上的算法来有效地解决这个问题,或者,如果它可能有帮助的话,一个自上而下的记忆解决方案。我只是不能做任何一个。你会如何解决这个问题?
【问题讨论】:
标签: algorithm recursion dynamic-programming memoization bottom-up