将2D数组分区为“框”并在框中编制索引元素

时间:2011-08-07 22:06:16

标签: multidimensional-array

我有一个大小为N * N的网格或二维数组。考虑一个6 * 6数组,如下所示:

......
......
......
......
......
......

我有两个整数,高度和宽度。网格将被划分为此大小的框,例如分为3 * 3框,如下所示:

... ...
... ...
... ...

... ...
... ...
... ...

同样的6 * 6网格也可以分成2 * 3个框,如下所示:

... ...
... ...

... ...
... ...

... ...
... ...

等等。如果重要的话,可以假设给出的两个整数总是如上所述均匀且整齐地划分整个阵列。问题是当我有一个坐标或索引到数组时,我需要快速索引这个特定坐标的邻居。邻居是同一个盒子里的点。例如,如果框的大小为2 * 3,则(0,0)的邻居将为{(0,1),(0,2),(1,0),(1,1),(1) ,2)}。这似乎并不太难,但我无法想出任何简单的东西。我使用的是C ++,但这与语言无关。

1 个答案:

答案 0 :(得分:1)

没有尝试运行此算法...

在伪代码中:

list_of_points find_neighbours_of(x, y, height_of_box, width_of_box)
{
    corner_x, corner_y = find_top_left_corner_of_box_containing(x, y)
    iterate over corner_x to corner_x + height_of_box
        iterate over corner_y to corner_y + width_of_box
            if current_x and current_y <> x, y add them to list
}