陳新龍
在輔導學生競賽的時候看到一道比較有意思的題目:小明打算在“十一”假期騎摩托車自駕游。摩托車每次加滿油后可以行駛100公里。小明在自家附近的加油站加滿油就上路了,上路之后還要順序經(jīng)過“1號-6號”六個加油站,每個加油站到上一個加油站距離分別為50、80、39、60、40、32公里。由于“十一”期間加油站有很多車要加油,所以小明希望盡量減少加油次數(shù)同時順利到達目的地。那么請問小明需要在哪些加油站停靠加油,才能使得沿途加油次數(shù)最少呢?
因為如果摩托車剩下的油不夠行駛到下一個加油站時,就必須要在這個加油站加油。結(jié)合Scratch編程思想一起來解決這道有趣的奧數(shù)題吧。
首先需要創(chuàng)建兩個列表。列表“距離”用來存放各個加油站之間的距離數(shù)值,將50、80、39、60、40、32公里數(shù)添加入列表中。
列表“停靠”存放六個元素,用于標記在哪個加油站停靠加油,默認“停靠”列表中六個元素初始值為0。當停靠某個站點時將對應值從0修改為1代表停靠此地加油。
根據(jù)題目的要求小明不必在所有站點加油。例如小明在第一個加油站加油,因為出發(fā)時油箱是滿的,可以行駛100公里,到達第一個目的地的時候,只能行駛50公里了,因為距離第二個加油站還有80公里,所以必須將油箱加滿才能繼續(xù)前行……
使用當油箱的油滿足到下一個加油站時就不加油的邏輯,計算出小明停靠加油的合理方案,使得加油次數(shù)最少。
新增加兩個變量“剩余油量”(統(tǒng)計當前還可以行駛公里數(shù),初始值為100)和變量“i”(列表中的序號,也可以理解成第幾個加油站,初始值為0)。
重復循環(huán)執(zhí)行6次(列表“距離”的項目數(shù))提取出“距離”列表中每一項的數(shù)值進行比較,如果“距離”列表中的任何一項的數(shù)字超出了100,那么彈出提示“距離加油站超過100千米,摩托車無法正常行駛此路程”并且停止全部腳本。
如果剩余的油量小于“距離”列表中當前的項數(shù)時,需要小明在第i號加油站停靠加油,并且在“停靠”列表中進行對應標記(對應初始值從0變?yōu)?),將剩余油量重新設(shè)置為100,表示在此加油站將油加滿。
在行駛的過程中需要注意兩點:剩余的油量是不斷地減少的(當前剩余油量值減去距離的第i+1項的值),序號i是不斷地增加的(每次增加1),直至到達最終目的地(圖1)。

最終小明需要在1號、2號、4號加油站停靠加油,才能順利到達最終的目的地。
簡單的奧數(shù)題目結(jié)合有趣的Scratch編程摩擦出了不一樣的火花,那么聰明的你是否解答出正確答案了呢(圖2)?
