[学习笔记]Nim游戏
[学习笔记]Nim游戏
社团招新题 附加题T1
好吧我忘干净了
题目描述
有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)
思路解析
首先考虑简单情况
只有两堆石头
一堆x 一堆y
记为(x,y)
可以得到二维表格
先确定几条定理:
- 无法操作 必败
- 对于无论所有操作都会到达必胜局面的 必败
- 可以到达必败局面的 必胜
必胜为1 必败为0
如图可知 两堆石子相等时为必败局面

推广到三堆
只要把其中两堆视作一个整体
就变为两堆问题
初步结论
每次操作尽可能使两堆石子数量相等
关于进阶
Nim值:当前规则下的石子数,等效于普通规则下的石子数
Nim值的计算:所有操作能到达局面的从未出现过的最小非负整数
这个我还不会
最终结论
每堆石子的异或和为0则 必败
反之 必胜