Arrays 查找二维网格外的邻居,该网格被简化为一维数组
我有一个二维网格,其中宽度和高度总是相同的Arrays 查找二维网格外的邻居,该网格被简化为一维数组,arrays,2d,dimension-reduction,Arrays,2d,Dimension Reduction,我有一个二维网格,其中宽度和高度总是相同的 [0][1][2] [3][4][5] [6][7][8] 我将它的数据源简化为一维数组 [0][1][2][3][4][5][6][7][8] 元素的访问是可行的,但这里有一个棘手的部分:如何知道,当仍在处理一维数组时,单元的邻居是否在网格之外 例如,[5]的右上邻域不在网格中,但使用计算的偏移索引,我将得到[3] 有这方面经验的人吗?假设你知道(i)单元格的索引和(2)网格的尺寸(正确吗?),并且它在一维数组中的索引是k,在二维数组中的索引是i
[0][1][2]
[3][4][5]
[6][7][8]
我将它的数据源简化为一维数组
[0][1][2][3][4][5][6][7][8]
元素的访问是可行的,但这里有一个棘手的部分:如何知道,当仍在处理一维数组时,单元的邻居是否在网格之外
例如,[5]的右上邻域不在网格中,但使用计算的偏移索引,我将得到[3]
有这方面经验的人吗?假设你知道(i)单元格的索引和(2)网格的尺寸(正确吗?),并且它在一维数组中的索引是k
,在二维数组中的索引是i,j
然后k=i*width+j
。因此,i=k/width
,j=k%width
。(/
是整数除法,%
是模数)
一旦你得到这两个索引,你就知道了相邻单元的索引,你就可以正常地对照边界检查它们(我想你知道怎么做)。好吧,假设你知道(I)单元的索引和(2)网格的尺寸(对吗?),并且它在1D数组中的索引是k
,在2D数组中i,j
然后k=i*width+j
。因此,i=k/width
,j=k%width
。(/
是整数除法,%
是模数)
一旦你得到这两个索引,你就知道相邻单元的索引,你可以正常地对照边界检查它们(我想你知道怎么做)。谢谢,我花了一点时间来正确地实现它,但它工作得很好!谢谢,我花了一点时间来正确实施它,但它工作得很好!