Соседи клетки в границах матрицы

Я сталкиваюсь с некоторыми проблемами, чтобы найти соседей в матрице. Я стараюсь не ставить много 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-координатой (также 2 для элемента 3). Кроме того, я считаю, что элемент должен быть в центре маски.

 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 элементы? Я думал об инициализации границ на нуле, но думаю, что это неправильный способ сделать это. Так что если кто-нибудь может объяснить лучший способ сделать это или алгоритм, я буду рад.

0 ответов

Другие вопросы по тегам