本單元重點回顧

  1. 地圖就是二維陣列a[i][j] 第一個中括號挑橫排(列)、第二個挑直排(行),索引從 0 開始;數字地圖用巢狀 vector,字元地圖用 vector<string>
  2. inside 永遠在存取陣列之前&& 短路求值保證出界時不會讀到陣列外面。
  3. 方向打成表dr[]dc[] 讓「往方向 d 走一步」變成固定兩行;自己排就順時針,右轉 +1、左轉 +3、迴轉 +2;題目給編號就照題目排。
  4. 走動的節奏:先算下一格、檢查、再移動。
  5. 射線=把那三步放進 while 走到停;標記表是跟地圖一樣大的 bool 表,記錄走過/有東西。
  6. 鄰格=方向表跑一圈、每個都過 inside範圍=雙層迴圈加距離條件,地圖小可以整張掃。
  7. 「同時發生」=讀舊表、寫新表、回合結束交換;或把要套用的變更先記下來、判完再一起做。
  8. 平移=枚舉左上角、逐格對應 (top+i,\ left+j);不規則形狀先打成位移表。
  9. 旋轉=一條座標公式加一張新表(長寬對調);還原=從最後一個操作倒著做反操作。
  10. 實作題的寫法:規則排好再翻譯、零件先寫、一個功能一個函式、交前自造角落與全牆測資。