当前位置:粤秀教育 > 成人大专/本科 > 自学考试 > 正文

桌子上有21根火柴小东和小华两人轮流取,桌上有20根火柴两人轮流从中拿

更新时间: 发布时间: 来源:粤秀教育 78

桌子上有21根火柴 小东和小华两人轮流取

桌子上有21根火柴,小东和小华两人轮流取,每人每次取1-4根火柴,拿到最后一根火柴为胜方,两人都采用最聪明的策略,请问你认为谁会赢得游戏的胜利呢?

桌子上有21根火柴小东和小华两人轮流取,桌上有20根火柴两人轮流从中拿

我们先来分析这道题目。假设就简单地用小东先手,不妨情况分为:

1.小东拿1根火柴:剩余20根火柴,小华随便取完,剩余的总数肯定是19-16-13-10-7-4-1(小华取的数量)

桌子上有21根火柴小东和小华两人轮流取

2.小东拿2根火柴:剩余19根火柴,小华按照近似之前的策略取,剩余的总数就是18-15-12-9-6-3(小华取的数量+1)3.小东拿3根火柴:剩余18根火柴,小华按照近似之前的策略取,剩余的总数就是17-14-11-8-5-2(小华取的数量+2)4.小东拿4根火柴:剩余17根火柴,小华按照近似之前的策略取,剩余的总数就是16-13-10-7(小华取的数量+3)

结合上述四种情况,可以计算出当火柴数量为5、9、13、17、21时,先手必胜。当火柴数量为1、2、3、4、6、7、8、10、11、12、14、15、16、18、19、20时,必败。如此一来,先手在遇到必败局面之前,会尽全力让自己进入胜利的轨道。

接着我们再引出另一道题目——桌子上有20根火柴,两人轮流从中拿取,每次取1-4根,最后一根算输。如果与前置游戏相似先手赢,那么玩家何不全部都进行随机操作?但是反过来,若和先手输的游戏相似,那么判断两个玩家会聪明地进行操作以赢取游戏。因此我们推断出该游戏与第一个游戏的规则一致,仅改变了游戏结束的定义。多掷几个点,可能便会发现这个结论的准确性,而在数学上,可以用动态规划的方法。

动态规划解法

基本思想:将现有大问题转化若干个相对简单的小问题,再从最简单的小问题起逐步解决最初的原问题,解决过程中使用查表法,避免无用浪费。该算法一般用于在多阶段过程中,把决策按照顺序一层一层进行分解,从而完美地模拟出一个过程的运作,或者找到一种最优化的方案。

利用动态规划算法,可以依照从第一步到第n步的顺序来进行

1.确定状态2.转移方程(子问题之间的关系)3.边界情况

对于这道题:

第1步:还剩下20根火柴,先手必胜/必败第2步:还剩下19根火柴,先手必胜/必败第3步:还剩下18根火柴,先手必胜/必败第n步:还剩下n根火柴,先手必胜/必败

接下来再考虑动态规划的转移方程。本题采用正难则反的方法,即假设先手胜为1,后手胜为0,那么在第n步时先手获胜的充要条件是先手在当前选取一定火柴后,使得后手无法获胜(此处我们假设后手采用最优策略),即

g(n) = !( g(n-1) & g(n-2) & g(n-3) & g(n-4) )

其中g(n)表示当前状态为n时,先手能否获胜。

接下来我们考虑当n的值等于1、2、3、4时,先手必败。这也是边界情况。

代码实现及结果

“`pythondef canWinNim(n):if n

我们可以自己构建若干组数据,验证此算法的正确性。结果如下:

“`pythonprint(canWinNim(4)) # Trueprint(canWinNim(15)) # Trueprint(canWinNim(20)) # False

我们可以看到,对于n等于20时,返回的结果为False,即先手必败。符合罗尔言的推论。

总结

这两道题目十分有趣,探讨了在游戏中的输赢问题,并使用计算的方法得到了较为准确的结果,除此之外,随着我们对算法技术不断的上升与需求不断的拓展,算法的应用领域也将愈发广泛,而正如所说,每一次解决问题的过程,都是对思维能力的鞭策,是一步步进阶的过程,希望在学习过程中大家能够获得收获,提高自身素养。

相关文章
学习热线
4008-128-711
申请报名

立即申请报名,提升你的学历

  • 姓名

  • 电话*

  • 报读学校

  • 报读专业

立即报名