yintingru

导航

 

问题:
有N块石头和两个玩家A和B,玩家A先将石头随机分成若干堆,然后按照BABA...的顺序不断轮流取石头,能将剩下的石头一次取光的玩家获胜,每次取石头时,每个玩家只能从若干堆石头中任选一堆,取这一堆石头中任意数目(大于0)个石头。
请问:
玩家A要怎样分配和取石头才能保证自己有把握取胜?

如果石头的个数N为偶数,A只要将其分为相同的两份,就一定能取胜。
初始:XOR(M1, M1) == 0
玩家B:XOR(M1, M2) != 0  (其中一堆的个数减少到M2)
玩家A:XOR(M2, M2) == 0  (玩家A将另一堆的个数也减少到M2)
结果:XOR(M2, M2) == 0  (直到结束状态(0, 0))

如果石头的个数N为奇数,B有必胜的方法。
初始:XOR(M1, M2, ... , Mn) != 0
玩家B:XOR(M1, ... , Mi', ... , Mn) == 0 (其中一堆Mi的个数减少到Mi')
玩家A:XOR(M1, ... , Mj', ... , Mn) != 0
玩家B:XOR(M1, ... , Mi', ... , Mn) == 0 (其中一堆Mi的个数减少到Mi')
结果:XOR(M1, ... , Mj' , ... , Mn) == 0 (直到结束)

扩展问题1 如果规定相反,取光所有石头的人输,又该如何控制局面?

如果石头的个数N为奇数,则只需将石头分为N堆,每堆的个数为1个,则按照BABA的顺序取石头,显然B必然是最后一个取石头,所以B必输。

如果石头的个数N为偶数,假设N=2,则不管A如何初始化石头(1,1)(2)则B只需取走一个石头,A必输。

假设N=4,A初始化石头为(2,2),假若B取走其中一堆的一块石头变为(1,2),则玩家A只需把个数为2的那堆石头取走,则B就输了,

A初始化石头为(2,2),假若B取走一堆石头的2块石头变为(0,2),则玩家A只需再取走一块石头,则B就输了。

所以当N=4时只需将石头初始化(2,2)则A必有办法取胜。

假设N为>=6的偶数,则只需要将其分为相等的两块(N/2,N/2),按照BABA的顺序取石头,

(1)则若B从一堆中取出石头使石头变为(M,N/2),若M>=2,则A立即从另一堆石头取相等的石头使剩余的石头变为(M,M),这样BABA的取石头会在某次A取石头之后使石头变为(2,2)的局面,则A赢B输。

(2)若B从一堆中取出石头使石头变为(M,N/2)若M=1,则A只需取完另一堆的N/2块石头即可,这时B输A赢,

(3)若B从一堆中取出石头后石头变为(M,N/2)若M=0,则A只需要从另一堆中取出N/2-1块石头即可,这时B输A赢。

以上(1)中若B第一次取使石头的个数变为(M,2/N)其中M>=2,则A取后变成(M,M),则B再取变为(M',M),若M'<2,则处理方式与以上的(2)和(3)类似。

总之若规定最后取完石头的人输,石头的个数为N,若N不等于2,则A总有办法可以获胜。

posted on 2012-08-27 14:13  yintingru  阅读(1266)  评论(1编辑  收藏  举报