47. Mutant Flatworld Explorers (CPE23641, UVA118) - CPE一顆星解答與說明
CPE一顆星49題解答 - pdf 電子檔,售價 199 元,
購買電子檔可將筆記與完整解答帶著走,
坐車、上課時皆可隨時複習,
不受網路或廣告影響,
若有需要請來信購買 greens2314@gmail.com
題目
- 計算出機器人執行指令後最後的 (x, y) 座標在哪裡
- 方向:E東、W西、S南、N北
- 指令:
- Left:原地左轉 90 度
- Right :原地右轉 90 度
- Forward :朝面對的方位,往前走一格
- 北方的定義:從 (x, y) 往 (x, y+1)
- 判斷機器人是否消失
- 紀錄消失的地點,預防其他機器人再次消失,若遇到有其他器人掉落時,則留在掉落之前的位置
輸入說明
- 第一行有兩個整數,為地圖的右上角頂點座標,左下角為 (0, 0)
- 每兩行為一筆機器人資料
- 第一行:機器人的初始位座標與方位,方位有:N北、S南 、 E東 、 W西
- 第二行:機器人要執行的指令,指令有:L(向左轉) 、 R(向右轉) 、 F(向前走)
輸出說明
- 根據每個機器人,印出最後在地圖上的座標位置與方位
- 若機器人在移動過程中超過地圖邊界,則印出消失前的位置與方位,並印出 LOST 字串
解題技巧
- 座標判斷
- 方位判斷
- 讀取字串中的字元
- 判斷資料是否存在
解題過程
取得輸入
- 取得地圖右上角的頂點
- 偵測是否有整數輸入,準備讀取機器人資料
- 讀取機器人初始座標與方位
- 方位只有一個字,可讀取第一個位置將方位變成字元,方便後續操作,若不轉成字元也可以
- 讀取指令字串
取得指定字串中的每個指令
- 使用 for 迴圈,讀取字串中的字元,呼叫 String 提供的 charAt() 方法
- 宣告移動過程中產生新的 x 座標與 y 座標的變數
- 判斷指令是否為前進 F,否則是旋轉 R 跟 L
執行前進 1 格的指令
判斷移動最後的位置是否落在地圖外
- 宣告串列變數,用來儲存機器人消失前的座標
- 宣告布林值變數,用來辨識此機器人是否掉落,消失在地圖中
- 若機器人在地圖外
- 將掉落前的位置紀錄下來,使用 Point2D 物件, import java.awt.geom.Point2D
- 判斷掉落前的位置是否曾經有其他機器人掉落過,呼叫 List 提供的 contains() 方法
- 沒有:標示為壯烈犧牲,將消失前的位置儲存並印出,並印出 LOST 字串,結束指令的判斷
- 有:獲得免死金牌,可以回到掉落前的位置繼續執行其他指令
執行前旋轉 R L 的指令
- 判斷機器人面向東(E)、西(W)、南(S)、北(N)哪一方,共 4 種方向
- 每個方位可執行向右轉(R)或向左轉(L),共 2 種旋轉方式
- 列舉出各方位轉向左與向右轉的所有可能,共有 8 種 (4*2)
印出
- 執行完所有指令後,若機器人沒有消失,則印出最終的座標位置與方位
留言
張貼留言