在將二維網格映射到一維數組時,偏移量是指在一維數組中
某一行的第一個元素相對于數組起始位置的位置差。對于一個 3 行 4 列的網格,我們使用公式 cur_pos = x * n + y 來計算二維位置 (x, y) 在一維數組中的索引。
當 x = 0 (第一行)時,對于該行的任何列 y,我們將其映射到一維數組的位置時,先計算 x * n,這里 n 是列數,即 4。 對于第一行(x = 0),計算 x * n 得到 0 * 4 = 0。這意味著第一行的元素在一維數組中的起始位置是 0,也就是偏移量為 0。
位置 (0, 0): x = 0, y = 0 cur_pos = 0 * 4 + 0 = 0 位置 (0, 1): x = 0, y = 1 cur_pos = 0 * 4 + 1 = 1 位置 (0, 2): x = 0, y = 2 cur_pos = 0 * 4 + 2 = 2 位置 (0, 3): x = 0, y = 3 cur_pos = 0 * 4 + 3 = 3
m = 3 # 行數
n = 4 # 列數
# 一維數組存儲網格信息
grid_info = [0] * (m * n)# 存儲第一行元素的值
for y in range(n):cur_pos = 0 * n + ygrid_info[cur_pos] = yprint(grid_info) # 輸出 [0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0]
總結: 偏移量表示在將二維網格映射到一維數組時,某一行第一個元素在一維數組中的起始位置。對于第一行(x = 0),由于 x * n 為 0,其偏移量是 0。這個概念有助于我們理解如何將二維網格中的元素按行存儲在一維數組中,并且可以根據 y 來確定同一行中不同列元素的具體位置。 通過這種方式,可以將二維網格的元素有序地存儲在一維數組中,方便后續對元素的訪問和操作,例如在最短路徑算法、網格搜索算法等場景中存儲距離、狀態等信息。