文/陳新龍
在輔導學生競賽的時候看到一道比較有意思的題目:小明打算在“十一”假期騎摩托車自駕遊。摩托車每次加滿油後可以行駛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号、2号、4号加油站停靠加油,才能順利到達最終的目的地。
簡單的奧數題目結合有趣的Scratch編程摩擦出了不一樣的火花,那麼聰明的你是否解答出正确答案了嗎?(圖2)
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!