问题描述:
发四堆扑克,一堆是2张,一堆是5张,一堆是8张,一堆是10张。排列如下:
2 5 8 10
两个人,轮流拿牌。每次只能在一堆里面拿,无论拿几张都可以,最多一次可以把任意一堆牌全拿走。经过N轮拿牌过后,拿最后一张牌的人输。
解决思路:
1. 从最简单的情况开始考虑,在简单的情况下可以取胜,才能在更复杂的情况取胜;
2. 我能否取胜,取决于“我本次拿走一些牌以后,对方一定是失败的”;
3. 如果我无法拿走一些牌,使得对方一定失败,那我就输了。
下面是推导:
(其中N表示大于1的数)
只有一堆时:
本轮剩余的牌数 | 1 | N |
我能否获胜 | No | Yes |
有两堆的时候:
本轮剩余的牌数 | 1,1 | 1,N | N,N |
我能否获胜 | Yes (可以推导到“1”的情况) | Yes (可以推导到“1”的情况) | No (无法一次推导到前面失败情况) |
有三堆的时候:
本轮剩余的牌数 | 1,1,1 | 1,1,N | 1,N,N | N,N,N |
我能否获胜 | No (无法一次推导到前面失败情况) | Yes (可以推导到“1,1,1”的情况) | Yes (可以推导到“N,N”的情况) | Yes (可以推导到“N,N”的情况) |
有四堆的时候:
本轮剩余的牌数 | 1,1,1,1 | 1,1,1,N | 1,1,N,N | 1,N,N,N | N,N,N,N |
我能否获胜 | Yes (可以推导到“1,1,1”的情况) | Yes (可以推导到“1,1,1”的情况) | No (无法一次推导到前面失败情况) | Yes (可以推导到“1,1,N,N”的情况) | No (无法一次推导到前面失败情况) |
可以看到,面对“N,N,N,N”的时候,是无法获胜的。所以想赢,一定要后拿牌。