我在矩阵中寻找邻居时遇到了一些问题。我试图不在if
代码中添加很多语句,因为我很确定有更好的方法可以做到这一点,但我不知道具体如何。
为简化起见,假设我们有以下矩阵:
1 2 3 4 5
6 7 8 9 6
1 2 3 4 5
2 3 4 6 7
考虑到单元格[2,2] = 3
,邻居将是(i,j-1)
, (i-1,j)
, (i+1,j)
, (i,j+1)
, (i+1,j+1)
, (i-1,j-1)
. 我使用这样的方法为它创建了一个“掩码” for-loop
,其中inicio[0]
是我当前元素的 i 坐标(示例中为 2)和inicio[1]
j 坐标(元素 3 也为 2)。另外,我正在考虑元素必须位于蒙版的中心。
for(k=inicio[0]-1;k<inicio[0]+1;k++){
for(z=inicio[1]-1;z<inicio[1]+1;z++)
if(k!=0 || z!=0) //jump the current cell
但是,我不知道如何处理边框中的元素。例如,如果我想找到元素的邻居[0,0] = 1
,考虑到元素必须位于掩码的中间,如下所示:
x x x
x 1 2
x 6 7
我该如何处理这些X
元素?我想过将边界初始化为零,但我认为这不是正确的方法。因此,如果有人可以解释更好的方法或算法,我会很高兴。