Problem
• 清空/分割游戏
• 进行游戏需要用到两个盒子,在游戏的开始,第一个盒子中有n枚石子,第二个盒子中有m
个石子(n, m > 0)。
• 参与游戏的两名玩家轮流执行这样的操作:清空一个盒子中的石子,然后从另一个盒子中
拿若干石子到被清空的盒子中,使得最后两个盒子都不空。
• 当两个盒子都被清空的时候,最后一个操作的人赢(或者说第一个无法操作的人输)
Soluiton
- (x,y) 表示两个盒子的石子数量分别是x和y时的局面
- 一个显然的先手必败态:(1,1),加以描述的话,1和1是两个奇数,也就是说,输的一方最后的局面一定是(奇数,奇数)
- 如果当前局面是(奇数,偶数),那么当前局面的先手可以选择将奇数盒清空,将偶数分成两个奇数,从而创造(奇数,奇数)的局面给后手
- 如果当前局面是(奇数,奇数),那么当前局面的先手无论清空哪一个,另一个奇数总要被分成一个奇数和一个偶数,也就是会给后手留一个(奇数,偶数)的局面,而后手完全可以在创造一个更小的(奇数,奇数)的局面(多次以后就会变成(1,1))给当前的先手,故(奇数,奇数)局面下的先手必败