#46309: 解題思路


sam851015@gmail.com (多挖鼻孔有益身心健康)

學校 : 臺中市立惠文高級中學
編號 : 277705
來源 : [123.192.228.253]
最後登入時間 :
2025-09-21 22:24:46

這題答對率好低,但我覺得沒有想像中的難,主要考細心程度

 

--

這題需要使用 while 持續循環,讓機器人一直移動,但總要有個停止條件,有幾個做法

  1. 對每個機器人都用一個 bool 紀錄是否移動,每次循環開始前,檢查該機器人是否能夠繼續移動,只要有一個能動就進入循環。
  2. 額外開一個陣列紀錄可以移動的機器人,只要機器人移動到地圖邊緣就直接 pop(),最後檢查陣列是否是空的就好。
  3. 維護一個 flag,每次循環檢查 flag 決定是否進入循環,進入後先設置 flag 為 False,然後讓機器人移動,只要有機器人可以移動(移動後不會出界),就將 flag 設置為 True,反之則不修改。

 

選一個你喜歡的方法就好,我個人用的是 1

 

--

機器人是先同時移動才會發生碰撞,而不是輪流移動的

所以模擬時需要先讓所有機器人移動,才檢查碰撞

 

--

有可能超過 2 個或以上的機器人同時撞在一起,若發生這種情況,相撞的所有機器人視為同一組

例如 1 2 3 在第 5 秒相撞,則應輸出 1 2 3, 5

而非 1 2, 51 3, 52 3, 5

 

--

即使是已經停在地圖邊緣的機器人,依然有可能會被後來移動的機器人撞到,所以判斷是否相撞時不能忽略

 

--

參考答案: gist(python)