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 > row
和colIndex >= colIndex
,那么为元素red
上色。