将2d数组映射到1d数组时的数组大小

时间:2012-08-22 19:09:16

标签: algorithm

如果我有一个二维数组,那么在1维中表示每个元素的方法是使用row_num * row_width + column,如果我想要row_num,column的元素。但我正在努力的是,如果我有一个3x3 2d阵列,那么一维数组应该有多大(仅作为一个例子)。不应该3 ^ 3 = 9对于1d阵列是否足够?但是对于元素3,2,索引将是3 * 3 + 2 = 11.或者大小应该是我想要解决的最大索引的大小 - 例如3 * 3 + 3 = 12如果我想解决3x3 2d阵列中的所有元素?

1 个答案:

答案 0 :(得分:4)

你需要从零(零索引)开始计数,其中行和列是0,1,2。

然后元素"(3,2)"是真的"(2,1)",或2 * 3 + 1 = 7,最后的元素"(3,3)"实际上是"(2,2)",它是2 * 3 + 2 = 8。这是1-D数组中的最后一个元素,因为它们也从0开始计算,因此9个元素是0,1,2,3,4,5,6,7,8。

例如:

>>> for r in 0,1,2:
...     for c in 0,1,2:
...         print r, c, r*3+c
... 
0 0 0
0 1 1
0 2 2
1 0 3
1 1 4
1 2 5
2 0 6
2 1 7
2 2 8