规则:你和对方轮流报数,从1开始轮流报出自然数,每人每次可以报1个,2个或者3个连续自然数,但是不能不报数,谁先报到那个数谁就赢了。比如14
与电脑进行博弈的过程如下图所示
想要和电脑比一比的同学可以点击链接去玩一玩。(点我快来试一试)
玩过以后想一想到底怎么才能打败电脑取得胜利?
博弈过程如果正向分析,每次选一个数字都有9种可能的变化越往后变化就越多,看来行不通。
我们不妨反过来想一想,例如上面的例子要抢到最终的目标数字14,那在抢到数字14之前必须要抢到哪一个数呢?
因为最多可以输入3个连续的数字我们只要抢到10,那就一定能抢到14,依次类推在10这个关键数字前,我们要抢到6和2,也就是说,要赢得胜利咱们其实要抢的就是2、6、10、14这几个关键数字。
有没有发现有什么规律呢?
咱们再来看一个目标数字21。
那就是要抢到21、17、13、9、5、1这几个关键数字。
有时候正向思考问题没有头绪的时候不妨反过来想一想。那能不能设计一个程序只要输入目标数字,计算机就能帮我们求出取得胜利需要抢到的关键数字呢?
其实通过前面两个例子,我们可以得到,第一个要抢的数字=目标数字%4 (%在计算机很多程序语言中作用是取余数),21%4=1,14%4=2,求出第一个要抢的关键数字之后,接下来就是在此基础上加4直到等于目标数字即可。是不是很简单?
再思考一下如果目标数字是20的话,那第一个要抢夺的数字是几呢?0,0是不能抢的,所以第一个要抢的数字是4,但是规则上一个人最多连续取得3个数字,所以先手的人不一定能够最终取得胜利,还要看目标数字是多少!
用Scratch解决这个问题的程序
这个游戏如果改成从1开始只能报最多2个连续的自然数?那又该如何取得胜利呢?欢迎在下方留言讨论!
0 评论 最近
没有评论!