有趣算法题:取5球策略

有100个球,甲乙两人轮流取,每次必须且只能取1到5个,最后一个取球的输。若甲先取,有无必胜策略?

分析:

如果总球数为1,第一个就是最后一个必输。

如果总球数为2,3,4,5,6,甲取1,2,3,4,5个,乙只能取剩下的一个,存在必胜策略。

如果总数为7,无论甲如何取(1,2,3,4,5),乙只要取(5,4,3,2,1)就可以留一个给甲,存在乙必胜策略。

结论:

如果总个数满足:

       sum = 6*n + 1

 

不管甲每次取几个(x),乙在甲取后只要取(6-x)个,就可以两人总共都取n次,最后剩一个给甲(先手)。

面对6*n+1的境地就是必输境地,甲先手取,就要构造6*n+1境地给乙。

回到题目中,甲的必胜策略为:

第1次取3个,留97给乙(97 = 6*16 + 1);

第2次至17次,乙取过之后x个,甲取6-x个;

最后剩1个,刚好到乙的顺序取球。

总结:

甲乙总共各取17次,第1次甲取3个,中间16次,每次甲乙共取6个,最后1次乙取最后一个:

100 = 3 + 16 * 6 + 1


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值