推導過程
二維數組 `A[m][n]`(行 1..m,列 1..n)按行優先存儲於一維數組 `B`:
- 第 1 行佔 `B[1]..B[n]`
- 第 2 行佔 `B[n+1]..B[2n]`
- ...
- 第 i 行起始下標 = `(i-1)*n + 1`
- 第 i 行第 j 列下標 = `(i-1)*n + j`
驗證
`A[1][1] → 1`,`A[1][n] → n`,`A[2][1] → n+1`,`A[m][n] → m*n`,符合線性遞增。
選項對照
- A. `n*(i-1)+j` **正確**
- B. `n*(i-1)+j-1` 少 1(下標從 0 開始時正確)
- C. `i*(j-1)` 錯誤
- D. `j*m+i-1` 列優先公式
推廣:列優先
列優先(Fortran/Matlab)下標 = `(j-1)*m + i`。