面试题

题目1(腾讯一面):

有20个银币,有1个金币,他们堆在一起,金币在最下面放着,你和小明玩,你先手。
下面是两个规则:
(1、每次最少取一个,最多取四个,不能不取
(2、金币和银币不能同时取
问怎么取,你能保证取到最后一个金币

解题思路:
博弈题,从后往前推,找到自己必胜的状态

首先,因为金币和硬币不能同时取,那么小明一定要取第20个银币,才能保证我取最后的一个金币。

条件1: 此时则要设法让小明一定要取到第20个银币

条件2:因为每次至少取一个,最多取四个,不能不取,所以要让条件1一定发生,则只能是在我取了之后,只剩下第20个银币,则此时小明不得不取。

此时,我们则要考虑,前面的19个银币该如何取,才能满足条件2。

充分利用规则1)每次最少取一个,最多取四个,不能不取,则我们可以保证 每一个会合(小明摸一次,我摸一次),则我能保证的是,无论小明摸几个,我都能让这一个回合摸出来的银币总数为 5

利用上述规律逆向推理:
状态5: 21(金币)—— 我
状态4: 20(银币)—— 小明
状态3: 19, 18, 17, 16 ,15 ——(我+小明),小明随意摸x,我只要根据小明摸得情况摸 (5-x) 个。
状态2: 14, 13, 12, 11, 10 ——(我+小明),小明随意摸x,我只要根据小明摸得情况摸 (5-x) 个。
状态1: 9, 8, 7, 6, 5 ——(我+小明),小明随意摸x,我只要根据小明摸得情况摸 (5-x) 个。
此时还剩下 4 3 2 1 ,四个银币。我是先手(每次能摸1-4个),所以此时我只要摸这前四个,便可以达到状态1

题解:
我作为先手,首先摸前4个,便可以保证最终的结果一定是我赢。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值