取石子游戏(原创)

总共M个石子,N堆,两人取石子,轮流任意取。拿到最后一个为胜利方。

1、若N为2堆的情况,不相等,则先手胜。因为先手可以变成相等的情况,对方拿多少,我拿多少。最后一个肯定是我的。

即:2堆异或不为0的时候,先手胜,因为先手可以使得异或为0。最后状态为xor(0,0)=0

2、若N为3堆的情况.M为奇数,先手胜。

M为偶数,不一定啊。如(1,2,3) M为偶数(但是他们异或为0),先手必输

                                        如(1,2,5)M也为偶数,但是他们异或不为0,故先手必胜。可以→(1,2,3)




结论1:若M为奇数,肯定xor(M1,M2...Mn)不为0,先手必胜。恰当的改变(关键!!)可以使得异或为0

结论2、只要是异或为0的几个数,任何一堆的改变,都会使得异或不为0

结论3:不能以总数M奇偶来判断胜负。但M为奇数,各堆异或肯定不为0,先手肯定胜。M为偶数,各堆异或有可能为0,也有可能不为0.也就是说,最终胜负是靠 各堆数是否异或为0来判断。

结论4:自己与自己异或肯定为0----基础知识

结论5:什么是恰当的改变呢?无论是(1,2,7)还是(1,2,6)。先他们自己之间三个数异或(异或值分别为4,和5),发现不为0。然后用这个异或值分别和各堆的值再一次分别异或(如4,再和1,2,7 分别异或)得到→(5,6,3)或者(是5和1,2,6 分别异或)得到(4,7,3) 最后一个数都是3,前面两个数都比原先的大,舍弃。故恰当的改变就是最后都变为(1,2,3)异或值为0的。可以胜。

结论5总结为:xor(M1,M2,M3) 若不为0.若M1<M2<M3. 异或值xor(M1,M2,M3)分别异或M1,M2,M3.

             利用结论4,前两个略小的数不管,M3异或xor(M1,M2,M3)=xor(M1,M2),这就是最后一堆剩下的数。无论是(1,2,7)还是(1,2,6)就是那个3. 自己与自己异或又可以为0了。故胜。




举例子一: (4,6,10)三个数异或值为8,不等于0,故先手必胜。4与6异或值为2.故→(4,6,2) 对方(1,2,4),我又可以变成(1,2,3) 胜。

举例子二:(1,2,3)异或为0,先手败。(1,4,5)异或为0,先手败。(1,3,4)异或不为0 故,先手可以变为0,先手胜。

举例三:观察规律,1与2异或为3.3与3异或为0.

                                1与4异或为5,5与5异或为0

                                 1与3异或不为4,反而是2.

                             同理 1,5,6 先手胜,1,6,7则先手败。1与6异或为7,7与7异或为0.1与5异或反而为4了



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值