从具有半径的正方形阵列中选择算法



As是一种从支撑元素以预定半径选择数组元素的算法?

例如,我选择项目28(见图),半径=1选定:

19 20 21 
27 28 29
35 36 37

如果支撑元件为1半径=选择1:

1 2
9 10

算法是取28项检查上面的元素是否取它(20),检查是否有更高的取它(12),然后取20和12项检查并取半径为2的右侧元素,旋转90度并重复。

这是算法还是它看起来像什么?

算法可视化:https://i.stack.imgur.com/Cy0Uu.jpg

如果所选元素位于(row, col),则遍历以(row, col)为中心的子矩阵看起来很简单。

我们必须小心避免越界问题。

伪码:

for rowIndex = max(0, row - radius) to min(matrixHeight - 1, row + radius)
  for colIndex = max(0, col - radius) to min(matrixWidth - 1, col + radius)
    take element at (rowIndex, colIndex)

如果您还想为图像中的元素上色,那么通过比较(rowIndex, colIndex)(row, col)的位置可以很容易地做到这一点:例如,如果rowIndex > rowcolIndex >= colIndex,那么为元素red上色。

最新更新