UniLecs #Task. Islands

Albert Davletov
UniLecs
Published in
2 min readAug 16, 2020

Задача: дана карта островов, которая представлена в виде матрицы NxM, состоящую только из 1 (суша) и 0 (вода). Вам необходимо посчитать кол-во островов на этой карте.

Примечание: будем считать, что остров окружен водой и образован соединением соседних земель по горизонтали и вертикали.

Входные данные: matrix — матрица NxM, состоящая из 1 и 0, где 1 <= N*M <= 10⁵.

Вывод: кол-во островов на карте.

Примеры:

Output = 1
Output = 3

Разбор

Один из классических подходов в решении таких задач это поиск в глубину.

Проходим по матрице и для каждого узла “1” запускаем поиск в глубину, который изменяет состояние каждого посещенного узла в “0”. Тогда при каждом запуске поиска в глубину для корневого узла будем увеличивать счетчик, ктр и будет содержать кол-во островов на карте.

В функции поиска в глубину рекурсивно будем запускать функцию вправо/влево и вверх/вниз. Детали реализации смотрите ниже!

Реализация

C#
C#

https://gist.github.com/unilecs/6e30b64c033d2ff21f549086c4625c21

Play-test

https://dotnetfiddle.net/RF0fZY

--

--