题目

有若干堆石子,每堆石子的数量是有限的,二个人依次从这些石子堆中拿取任意的石子,至少一个(不能不取),最后一个拿光石子的人胜利。

(假设他们每次都取最优解

解题思路

情况1: 只有一堆石子时,先手可以直接取完所有石子,故先手必胜;

情况2:有两堆石子时,假设现在有两堆石子且数量不相同,那么你的最佳选择是取走多的那堆石子中多出来的那几个,使得两堆石子数量相同,这样,不管另一个怎么取,你都可以在另一堆中和他取相同的个数,这样的局面你就是必胜。

对于他的那一堆不是无尽的,一定能取空,他取空了,相对来说你也取空了,后手取空获胜。

情况3:如果是三堆 ,我们用(a,b,c)表示某种局势。

第二种奇异局势是(0,0,0),无论谁面对奇异局势,都必然失败。
第二种奇异局势是(0,n,n),只要与对手拿走一样多的物品,最后都将导致(0,0,0)。

仔细分析一下,(1,2,3)也是奇异局势,无论对手如何拿,接下来都可以变为(0,n,n)的情型。

引入L . Bouton1902年给出的定理:状态(a, b, c)为必败状态当且仅当 a 异或 b 异或 c=0
也就是当Nim和0 时,先手必败,否则必胜

Nim和 即所有石子数的异或