题目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个,便可以保证最终的结果一定是我赢。