腾讯实习 取纽扣游戏

(2017腾讯实习生校招笔试题)Calvin和David正在玩取纽扣游戏,桌上一共有16个纽扣,两人轮流来取纽扣,每人每次可以选择取1个或3个或6个(不允许不取),谁取完最后的纽扣谁赢。Cavin和David都非常想赢得这个游戏,如果Cavin可以先取,Cavin的必胜策略下第一步应该取
  A、1个
  B、3个
  C、6个

  D、Cavin没有必胜策略


这个题的做法是从小到大逆推一个值是必胜点还是必败点,一个值是必胜点说明用户如果要从这个值取纽扣的话是一定能赢的(对于取多少个是有约数的,一般也是题目要求的值),一个值是必败点说明用户要从这些值中取时是一定会失败的。

一个点无论怎么取时都导致剩下的数是一个必胜点,那么这个点是必败点。

一个点只要有一种能取法,使下一个点是必败点,那么这个点就是必胜点。


对于这个题来说,我们从1开始逆推。

1:很明显必胜点

2:还剩下2个时,用户只能取一个(剩下1,而1是必胜点),所以2是必败点

3:必胜点

4:无论取1还是3,剩下的都是必胜点,所以4是必败点。

5:必胜点,取1,剩下的4是必败点

6:必胜点

7:必胜点,取3,剩下的4是必败点

8:必胜点,取6,剩下的2是必败点

9:无论怎么取,剩下的都是必胜点,所以9是必败点

10:必胜点,取1,剩下9是必败点

11:必败点,无论怎么取剩下的都是必胜点

12:必胜点:取1,剩下11是必败点

13:必败点,无论怎么取剩下的都是必胜点

14:必胜点,取1,剩下13是必败点

15:必胜点,取6,剩下9是必败点

16:必胜点,取3,剩下13是必败点,取1不行,剩下15是必胜点,取6不行,剩下10是必胜点。


可参考下图:


参考地址:http://www.cnblogs.com/eniac12/p/5400309.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值