Как найти соседей с одинаковым значением в 2-D массиве в C? - PullRequest
0 голосов
/ 18 октября 2019

У меня есть матрица с размерами NxN, например, в этом случае 5x5:

1 0 1 0 1
0 1 0 1 0
0 0 1 0 1
0 0 1 0 0
1 1 0 1 0

, и я хочу получить всех соседей с таким же значением, как элемент в позиции (3,3), итакже получить соседей соседей с одинаковым значением и т. д. Ограничение состоит в том, что я не могу использовать рекурсию, кто-нибудь знает, как решить эту проблему?

1 Ответ

0 голосов
/ 18 октября 2019

Это может быть самое простое решение. Предполагая, что диагонали не считаются соседями.

for (int i=0; i<N; i++) {
  for (int j=0; j<N; j++) {
    if (i > 0  &&  tab[i][j] == tab[i-1][j]) {
      // same value
    }
    if (i < N-1  &&  tab[i][j] == tab[i+1][j]) {
      // same value
    }
    if (j > 0  &&  tab[i][j] == tab[i][j-1]) {
      // same value
    }
    if (j < N-1  &&  tab[i][j] == tab[i][j+1]) {
      // same value
    }
  }
}
...