本文主要是介绍编程之美 1.12 nim(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考:http://tieba.baidu.com/p/613078798?pn=1
有若干堆石头,A,B分布依次取,一次只能选择一堆,从这堆中选择大于0的石头,问:1,如果最后取光石头的人获胜,A在什么情况下获胜?2,如果最后取光石头的人失败,A在什么情况下获胜?
1. 在规则1下,先手获胜的情况,在规则2下先手同样获胜
2. 规则1和规则2的取法不一样。
设当石头出现(1,1,1,...,X),x>1的情况下,称进入小卡区域。
规则1:
先手面临的局面必须是XOR(M1,M2,..,M3)!=0才能保证,先手获胜;此时,先手必须调整堆,使得XOR(M1,M2,..,M3)=0;这样就能保证先手最后获胜。
规则2:
先手面临的局面必须是XOR(M1,M2,..,M3)!=0才能保证,先手获胜;此时,先手必须调整堆,使得XOR(M1,M2,..,M3)=0;这样就能保证先手最后获胜。
大家可以看出规则1和规则2的策略是一样的,但是在规则2下,还要增加一个策略:当局面进入小卡区域时,当有偶数个1时,先手取x-1个石头;当有奇数个1时,先手取x个石头
但是有一个问题,如何保证当局面进入小卡区域时,正好该先手取?
这篇关于编程之美 1.12 nim(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!