【发布时间】:2016-10-16 02:15:52
【问题描述】:
我一直在尝试解决来自 HackerRank 的动态编程部分的this 问题。我阅读了编辑解决方案并理解了它。但是,它直接跳转到动态编程方法。我想知道这个问题的蛮力方法是什么。
描述:您和您的朋友决定使用由 N 个积木组成的堆栈来玩游戏。在这个游戏中,您可以选择从顶部移除 1、2 或 3 块积木,然后将蚀刻在移除积木上的数字添加到您的分数中。你必须玩,以便获得最大可能的分数。假设您的朋友也将发挥最佳效果,而您迈出了第一步。
我最初的想法是枚举所有可能的 1,2,3 长度的砖块组合,从栈顶开始一直到栈底。让我们将此枚举称为 S。然后,在 S 中为所有 x(您的分数)和 y(对手的分数)找到所有可能的 (x,y),其中 x != y。最后遍历所有这些对并计算您的最高分数(例如 x 的最大总和)。
【问题讨论】:
标签: algorithm dynamic-programming