Поиск смежных элементов в 2d массиве и их подсчет. - PullRequest
0 голосов
/ 19 ноября 2018

Я нахожусь в тупике, что делать для этой части моей домашней работы, и мог бы действительно помочь. Мне нужно циклически перебрать заданный двумерный массив и найти все похожие элементы, которые примыкают к другому, и посчитать это, например,

AA--B
AA--B
-AA--
----C

Так что счет будет 3, один для As, для B и один для C, мне просто нужно знать, с чего начать. Пока у меня есть

public static int howManyOrganisms(char[][] image){
    int count = 0;
    for (int i = 0; i < image.length; i++) {
        for (int j = 0; j < image[i].length; j++) {
            if(image[i][j] != '-') {
                count++;

            }
            System.out.println();
        }
        return howManyOrganisms(image, count);
    }
}

Мне нужна помощь, чтобы выяснить, как отследить общее количество элементов, которые находятся в контакте друг с другом (таким образом, влево, вправо, вниз, вверх), являясь другим подобным элементом.

1 Ответ

0 голосов
/ 19 ноября 2018

В каждой итерации вы можете использовать переменные i, j, чтобы «перемещаться» по плоскости 2D и видеть, совпадают ли какие-либо взаимодействующие элементы.В каждой итерации вы проверяли бы следующие индексы, чтобы увидеть, совпадают ли они:

  • image [i-1] [j] (на одну строку вверх)
  • image [i +1] [j] (на одну строку вниз)
  • image [i] [j-1] (один слева)
  • image [i] [j + 1] (один справа)

Конечно, для всех этих утверждений сначала вы должны проверить, находится ли + 1 / -1 в пределах размера вашей матрицы, в противном случае вы получите исключение за пределами границ.

...