這張圖其實是將座標 (x, y)
依照 斜對角順序編號:
(0, 0) → 0 (0, 1) → 1 (1, 0) → 2 (0, 2) → 3 (1, 1) → 4 (2, 0) → 5 (0, 3) → 6 (1, 2) → 7 (2, 1) → 8 (3, 0) → 9 ... |
你可以發現:
每一條「斜線」上滿足 x + y = k
每一條斜線起始編號為:start(k) = k*(k+1)/2
所以對於某個 (x, y)
,它的編號就是:
index(x, y) = (x + y) * (x + y + 1) / 2 + x
這是一個著名的座標壓縮技巧,稱為 Cantor pairing function 的變形。
驚不驚喜意不意外? 現在把你的破dp丟掉 直接用這個公式 遞迴什麼的都謝謝再連絡