将 2D 数组划分为"boxes"并在框中索引元素



我有一个大小为N*N的网格或2D数组。考虑一个6*6的数组,例如:

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

给定两个整数,高度和宽度。网格将被分割成如下大小的方框,例如3*3的方框,如下所示:

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

同样的6*6的网格也可以分成2*3的盒子,像这样:

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

以此类推。如果需要的话,可以假设给定的两个整数总是像上面那样均匀整齐地划分整个数组。问题是,当我有一个坐标或索引到数组时,我需要快速索引这个特定坐标的邻居。邻点是同一方框中的点。例如,如果盒子的大小为2*3,则(0,0)的邻居将是{(0,1),(0,2),(1,0),(1,1),(1,2)}。这似乎并不太难,但我无法想出任何简单的东西。我正在使用c++,但这是独立于语言的。

不尝试运行此算法…

在伪代码:

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
}

相关内容

  • 没有找到相关文章

最新更新