文/陈新龙

在辅导学生竞赛的时候看到一道比较有意思的题目:小明打算在“十一”假期骑摩托车自驾游。摩托车每次加满油后可以行驶100公里。小明在自家的附近的加油站加满油就上路了,上路之后还要顺序经过“1号-6号”六个加油站,每个加油站到上一个加油站距离分为50、80、39、60、40、32公里。由于“十一”期间加油站有很多车要加油,所以小明希望尽量减少加油次数同时顺利到达目的地。那么请问小明需要在哪些加油站停靠加油,才能使得沿途加油次数最少呢?

因为如果摩托车剩下的油不够行驶到下一个加油站时,就必须要在这个加油站加油。结合Scratch编程思想一起来解决这道有趣的奥数题吧。

首先需要创建两个列表。列表“距离”用来存放各个加油站之间的距离数值,将50、80、39、60、40、32公里数添加入列表中。

列表“停靠”存放六个元素,用于标记在哪个加油站停靠加油,默认“停靠”列表中6个元素初始值为0。当停靠某个站点时将对应值从0修改为1代表停靠此地加油。

根据题目的要求小明不必在所有站点加油。例如小明在第一个加油站加油,因为出发时油箱是满的,可以行驶100公里,到达第一个目的地的时候,只能行驶50公里了,因为距离第二个加油站还有80公里,所以必须将油箱加满才能继续前行……

使用当油箱的油满足到下一个加油站时就不加油的逻辑,计算出小明停靠加油的合理方案,使得加油次数最少。

新增加两个变量“剩余油量”(统计当前还可以行驶公里数,初始值为100)和变量“i”(列表中的序号,也可以理解成第几个加油站,初始值为0)。

重复循环执行6次(列表“距离”的项目数)提取出“距离”列表中每一项的数值进行比较,如果“距离”列表中的任何一项的数字超出了100,那么弹出提示“距离加油站超过100千米,摩托车无法正常行驶此路程”并且停止全部脚本。

如果剩余的油量小于“距离”列表中当前的项数时,需要小明在第i号加油站停靠加油,并且在“停靠”列表中进行对应标记(对应初始值从0变为1),将剩余油量重新设置为100,表示在此加油站将油加满。

在行驶的过程中需要注意两点:剩余的油量是不断地减少的(当前剩余油量值减去距离的第i 1项的值),序号i是不断的增加的(每次增加1),直至到达最终目的地。(图1)

趣味数学解决问题(趣味数学加油问题)(1)

最终小明需要在1号、2号、4号加油站停靠加油,才能顺利到达最终的目的地。

简单的奥数题目结合有趣的Scratch编程摩擦出了不一样的火花,那么聪明的你是否解答出正确答案了吗?(图2)

趣味数学解决问题(趣味数学加油问题)(2)

,