特别的Nim游戏变体(2或3支)

时间:2015-12-06 20:15:20

标签: algorithm tree greedy

你从一堆n支装开始。每个玩家每回合移除2或3根棍子。移除最后一根棍子的玩家获胜。如果他们只剩下一根棍子,那么比赛就是平局。

我需要确定谁将赢得一般n堆的游戏,表示为n的函数。但是,除非我们以2支,3支或5支开始游戏,否则总是可以引导游戏以使其以平局结束。我画了9支以上的游戏树,并且总是可以通过做出导致剩下一根棍子的选择来防止丢失。如何针对这个特定问题编写获胜规则?

2 个答案:

答案 0 :(得分:1)

  

然而,除非我们以2支,3支或5支开始游戏,否则总是可以指导游戏,以便以平局结束。

我不认为这是真的。

例如,假设我们从10支装开始。如果你移除x棒,我将永远删除5-x棒。这意味着在每转一圈后,剩下5支,经过两转,我就赢了。

同样适用于5的任何倍数。

现在考虑模5的其他可能值。

答案 1 :(得分:0)

以下是规则:

  • 失去位置:n = 5k
  • 绘制:n = 5k + 1或n = 5k + 4
  • 获胜位置:n = 5k + 2或n = 5k + 3

您可以通过构建如下所示的表来观察模式:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 .....

L D W W D L D W W D L D W W D L D

构建表格的步骤:

  1. 如果 n = 0 ,请注意你输了,将其标记为 L
  2. n = 1 时,绘制,标记为 D
  3. n = 2 时,您只能画2支。所以,你的对手恰好面临n = 0而失败,所以你赢了,把它标记为 W
  4. 对于 n = 3 ,你可以拿2或3支,因此,你的对手可以最终得到1或0支。 1是抽奖,0是损失,因此他赢了。因此,我们将选择胜利,将其标记为 W
  5. 对于 n = 4 ,类似地,对手最终可以在2或1结束。所以,我们可以输或输。我们将选择绘制,将其标记为 D
  6. 对于 n = 5 ,我们可以让对手最终以2或3结束。对于他来说,他们都胜利。所以,我们输了。将其标记为 L
  7. 基本上,要确定数字 n 的状态( L,W或D ),我们需要查看已计算状态的状态 n- 2 n-3

    观察此模式( LDWWD )之后重复。