Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 将二维数组映射到一维数组时的数组大小_Algorithm - Fatal编程技术网

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)
而是获得与上述相同的索引。