【发布时间】:2019-10-20 03:21:22
【问题描述】:
我正在研究经典的硬币游戏问题:
爱丽丝和鲍勃正在使用一堆硬币玩游戏。玩家依次从一堆硬币中挑选出几个硬币。每次允许玩家选择 1、2 或 4 个硬币,获得最后一个硬币的玩家为获胜者。爱丽丝选择了第一个。
我其实不明白结果是怎么来的。
coinGame(1)= ('Alice', 1)
coinGame(2) = ('Alice', 1)
coinGame(3) = ('Bob', 2)
coinGame(4) = ('Alice', 3)
coinGame(5) = ('Alice', 2)
coinGame(6) = ('Bob', 6)
coinGame(7) = ('Alice', 8).
我了解 1,2,3...6 的输出,但我不了解 7 及之后的输出。
对于输入 6,因为 Alice 总是会到达硬币 2、4 和 5。因此,Bob 只需选择 1、2 或 4 中的任何一个即可赢得比赛。总路数是 1 + 3 + 2 = 6
对于输入 7,Bob 可以达到 3 和 6,然后 Alice 只需选择 4 或 1 个硬币即可赢得游戏,其中 2 + 6 = 8 种获胜方式。我不明白的是,对于输入 7,Alice 也可以达到 5,然后 Bob 只需选择 2 即可获胜。为什么我们忽略了这个案例并认为 Alice 赢了?
我希望我能得到一些澄清。
谢谢!
【问题讨论】:
-
coinGame的输入代表什么,输出代表什么?(winner, ?) -
@ChrisGong 是计算结果的算法,数字是获胜方式的数量。
-
假设两个玩家都玩得很完美。这就像 nim 的游戏,你必须从获胜的位置走到失败的位置才能仍然获胜。正如你所说,Alice 从 7 可以到 6 或 3,所以你可以将 6 和 3 的路数相加,即 2 + 6 = 8。Alice 不会做失败的举动并去 5,除非爱丽丝没有获胜的棋步,否则您将取 1、2 和 4 个硬币的方式数相加,这就是为什么 6 有 2 + 3 + 1 = 6 种方式。