编程之美 set 16 拈游戏分析(1)
题目
N 个石头排成一行, 每块石头有固定的位置和编号, 两个玩家依次取石头, 每个玩家可以取其中的任一块石头, 或者相邻的两个石头. 石头在游戏过程中不能移位, 最后将剩下的石头依次取光的玩家获胜
思路
1. 从简单的特例除法讨论
当石头的数目 N = 1,2 时, 先取者胜
当石头的数目 N = 3 时, 中间一个, 先取者胜
当石头的数目 N = 4 时, 取中间两个, 先取者胜
可以发现规律
假设 N <= i 时, 先取者胜.
当 N(N=i+1) 为奇数时, 取中间一个, 否则取中间两个, 将石子堆成相等的两堆, 两堆的数目小于 i, 对于一堆先取的胜, 两堆就是后取的胜. 得出结论, 先取的总是胜.