#54813: 解題思路


xutingyao0505@gmail.com (TingYao Xu)


第一步:讀取地圖邊界

第一行讀入 maxXmaxY

第二步:處理每個機器人

使用 while (cin >> x >> y >> current_dir) 讀取機器人的初始狀態,接著讀入指令字串 commands

第三步:模擬移動

遍歷 commands 字串中的每個字元:

  • 如果是 'L' 或 'R':更新方向索引。

  • 如果是 'F':

    1. 計算新位置 (nx, ny)。

    2. 檢查是否越界。

    3. 若越界:

      • 檢查是否有氣味。

      • 若無氣味 -> 標記氣味、標記為 LOST、跳出迴圈。

      • 若有氣味 -> 不做任何事(留在原地)。

                           若沒越界:更新 (x, y)。

處理Scent

用一個二維布林陣列 bool has_scent[51][51] 來記錄。

 

處理方向

可以建立一個字串 string dirs = "NESW";,並配合 dx = {0, 1, 0, -1}dy = {1, 0, -1, 0}

  • 指令 'R':( 目前的索引 + 1 ) % 4

  • 指令 'L':( 目前的索引 + 3 ) % 4

  • 指令 'F':目前的 ( x, y ) 加上對應方向的 ( dx, dy )