1

我在矩阵中寻找邻居时遇到了一些问题。我试图不在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元素?我想过将边界初始化为零,但我认为这不是正确的方法。因此,如果有人可以解释更好的方法或算法,我会很高兴。

4

0 回答 0