编程之美——NIM(1)一排石头的游戏
NIM(1)一排石头的游戏这个问题书上讲解的已经很详细了,特此不讲了,可以参考《编程之美》。
下面给出扩展题的思考。
问题描述:N块石头排成一行,每块石头有固定的位置。两个玩家依次取石头,每个玩家每次可以取其中任意一块石头,或者相邻的两块石头,
石头在游戏过程中不能移位,最后取光石头的人输,如何应对?
(1)当N=1时:先取者A只能取完必输——lose;
(2)当N=2时,先取者A比赢——win;
(3)N=3,先取者A可先取任意两块——win;
(4)N=4,若A取两个石头,那么B取一个石头,A只能取最后剩下的一个石头。若A取一个石头,那么B取两个石头,A只能取最后剩下的一个石头。因此,无论A怎么取,B都有必胜策略。——lose;
(5)N=5,A先取一块石头,变成4块石头B取必定输,从而A——win;
(6)N=6,同理A先取两块石头,又变成4块石头的情形——win;
(7)N=7,各种方案发现——lose;
……
总结:N=3K+1(K=0,1,2,……)时先取者A输,其余情况N=3K,N=3K+2时先取者A赢