相信大家都会Nim游戏: 给出n堆石子,两人轮流取,取光者获胜,问先手是否有必胜策略。
如果改一下,变成取光者失败,问先手是否有必胜策略。那么就是逆Nim游戏,即SJ定理。
给出例题:POJ3480
对于所有的情况,都可以归纳为下面3类:
1.每堆石子均为1。
(显然,若n为奇数,则先手必败,n为偶数,则先手必胜)
2.只有1堆石子大于1,n-1堆石子为1。
(那么,当n-1为偶数时,先手则可以将大于1的石子堆取至1个石子;当n-1为奇数时,先手则取完大于1的石子堆。可得,先手必胜)
3.石子数大于1的堆数,大于1。
(1)n堆石子异或和为0:由于n堆石子不可能一下子取光,所以拿走某一堆中的若干个石子以后只可能出现以下两种状态:
1.只有1堆石子大于1,n-1堆石子为1;(即情况2)
2.石子数大于1的堆数,大于1,且n堆石子异或和不为0。(即情况3.2)
(这两个状态的转移过程比较难思考,可以举几个例子进行理解)
(2)n堆石子异或和不为0:与3.1同理,拿走某一堆中的若干石子以后只可能出现以下两种状态:
1.只有1堆石子大于1,n-1堆石子为1;(即情况2)
2.石子数大于1的堆数,大于1,且n堆石子异或和为0。(即情况3.1)