确定哪些单元格与网格中的特定单元格相邻

时间:2013-06-30 16:39:59

标签: java c++

如果您的网格可以是不同的尺寸(即4x6然后10x15),您将如何找到特定细胞附近的细胞?是否有可能说你在第15单元并告诉它,如果它是一个10x10网格,那么单元格15有5,14,16和25个单元作为邻居?或者,网格可以具有许多不同的维度这一事实使得无法在C ++或Java中使用可以即时运行的函数吗?

1 个答案:

答案 0 :(得分:2)

让我们构建一个算法:

根据维度m行* n列,我们有以下示例网格。在此示例中,m为2,n为3。

+-----+ 
|0|1|2|
+-----+
|3|4|5|
+-----+

现在,我们可以确定垂直位置a和水平位置b中的单元格编号为am+b

由于我们知道m,让我们用模数来计算a和b。

由于b小于m(因为我们在编程中对第一行和第一列使用0),我们可以说gridsquare z的位置是列{{1} },行z%m其中floor(z/m)表示向下舍入为整数。

然后你可以尝试在m和n中加1和减1得到4个相邻的正方形,然后用floor(计算它们的数字ID,如前所示。