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