有两堆球,A 堆 10 个,B 堆 8 个,甲乙两人轮流选择其一取球,每次至少取一个,至多取该堆全部,谁取了最后一个球即败者。问,先手怎么取球才可以必胜?
压缩一下题目,设 A 堆 3 个,B 堆 1 个。这时候发现并不行,如果先手甲(后同)把 A 堆全取了,那乙必输——这不是博弈,而是乱杀。
那么,设 A 堆 4 个,B 堆 2 个。遍历一下:
- 甲取 A 4 个,乙取 B 1 个,甲输。
- 甲取 A 3 个,乙取 B 2 个,甲输。
- 甲取 A 2 个:
- 乙取 B 2 个,甲取 A 1 个,乙输。
- 乙取 B 1 个,甲取 A 2 个,乙输。
- 两堆球个数相同,乙取 A 多少个也是必输。
- 甲取 A 1 个(此时 3:2):
- 乙取 A 1 个,出现 2:2,同上,甲输。
- 乙取 A 2 个,甲取 B 2 个, 乙输。
- 乙取 A 3 个,甲取 B 1 个, 乙输。
- 乙取 B 1 个,甲取 A 3 个, 乙输。
- 乙取 B 2 个,甲取 A 2 个, 乙输。
遍历结束,得到一个信息:谁先把两堆球的数量取到 2:2 必胜。
把原题重新拿出来,设甲取 A 8 个,这时候如果乙也发现了同样的信息,那乙就会取 B 6 个,乙胜;故,甲为了杜绝这种情况,取 A 7 个,接下来乙可能的取法有这些:
- 乙取 B 8 个,甲取 A 2 个,乙输。
- 乙取 B 7 个,甲取 A 3 个,乙输。
- 乙取 B 6 个,甲取 A 1 个,出现 2:2,乙输。
- 乙取 B 5 个(此时 3:3):
- 甲取 A 3 个,乙取 B 2 个,甲输。
- 甲取 A 2 个,乙取 B 3 个,甲输。
- 甲取 A 1 个,乙取 B 1 个,出现 2:2,甲输。
- 两堆球个数相同,甲取 B 多少个也是必输。
遍历中止,再次得到一个信息:谁先把两堆球的数量取到 3:3 必胜。
发现了一个可能的规律:先取到 N:N 必胜。脑海里设想一下 4:4、5:5、6:6,经过努力的计算,发现全部成立。
最终得到结论,谁先把两堆球的数量比例取到 N:N(N>=2) 必胜。因此,原题的答案就是先手取 A 2 个必胜。
思维拓展:两堆球升级到三堆球呢,这时候如何解?
感谢大胖带我解题,虽然最后发散思维想了一个更难更坑的三堆球 🥲
