Algorithm 将二维数组映射到一维数组时的数组大小
如果我有一个二维数组,在一维中表示每个元素的方法是使用Algorithm 将二维数组映射到一维数组时的数组大小,algorithm,Algorithm,如果我有一个二维数组,在一维中表示每个元素的方法是使用row_num*row_width+column,如果我希望元素位于row_num,column。但我正在努力解决的是,如果我有一个3x3 2d数组,那么一维数组应该有多大(仅举一个例子)。3^3=9对于1d数组是否足够?但是对于元素3,2,指数是3*3+2=11。或者,如果我想从3x3 2d数组中寻址所有元素,那么大小应该是我想要寻址的最大索引的大小-例如3*3+3=12?您需要从零开始计数(零索引),其中行和列是0,1,2 然后元素“(3
row_num*row_width+column
,如果我希望元素位于row_num,column。但我正在努力解决的是,如果我有一个3x3 2d数组,那么一维数组应该有多大(仅举一个例子)。3^3=9对于1d数组是否足够?但是对于元素3,2,指数是3*3+2=11。或者,如果我想从3x3 2d数组中寻址所有元素,那么大小应该是我想要寻址的最大索引的大小-例如3*3+3=12?您需要从零开始计数(零索引),其中行和列是0,1,2
然后元素“(3,2)”实际上是“(2,1)”,或2*3+1=7,最后一个元素“(3,3)”实际上是“(2,2)”,即2*3+2=8。这是一维数组中的最后一个元素,因为它们也是从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
您需要从零开始计数(零索引),其中行和列为0,1,2 然后元素“(3,2)”实际上是“(2,1)”,或2*3+1=7,最后一个元素“(3,3)”实际上是“(2,2)”,即2*3+2=8。这是一维数组中的最后一个元素,因为它们也是从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
如果你可以从0开始计算,你是对的,但是在我的例子中,我需要从1开始计算,所以我使用了(r*N+c)%I不知道如何从1开始计算,但是你可以简单地减去它:如果r,c=1,2,3,那么你可以使用
(r-1)*3+(c-1)
取而代之的是获得与上述相同的索引。如果你可以从0开始计算,那么你是正确的,但在我的情况下,我需要从1开始计算,所以我使用的是(r*N+c)%I不知道如何从1开始计算,但你总是可以简单地减去它:如果r,c=1,2,3,那么你可以使用(r-1)*3+(c-1)
而是获得与上述相同的索引。