RU | EN | FR | JP | DE | CH | KR
Дана карта озера в виде двумерного массива, где каждая ячейка представляет собой либо воду ('W'), либо сушу ('L'). Задача состоит в определении количества отдельных островов на этой карте. Остров определяется как группа смежных (соединённых по вертикали или горизонтали) ячеек суши, окруженных водой.
Пример карты озера:
[ ['W', 'L', 'W', 'W'], ['W', 'L', 'L', 'W'], ['W', 'W', 'L', 'W'], ['L', 'W', 'W', 'L'] ]
Ожидаемый результат: На карте присутствуют 3 отдельных острова. Один остров состоит из двух смежных ячеек 'L' во втором столбце, второй — из одной ячейки в третьей строке, третьей колонке, и третий — из двух недиагонально смежных ячеек в последней строке.
- Разработать алгоритм, использующий поиск в ширину (BFS), для определения количества островов на карте.
- Визуализировать процесс поиска, отмечая посещенные и проверенные ячейки.
- Посчитать количество выполненных шагов (перемещений) в процессе поиска.
- Инициализируем счетчик островов и пустую очередь для BFS.
- Проходим по каждой ячейке карты.
- Если текущая ячейка - суша и ее еще не посещали, то запускаем BFS для поиска острова.
- В процессе BFS отмечаем посещенные ячейки и увеличиваем счетчик шагов.
- BFS заканчивается, когда мы обходим все смежные ячейки данного острова.
- Повторяем шаги 3-5 для всех ячеек на карте.
В процессе выполнения алгоритма мы будем визуализировать посещенные и проверенные ячейки. Это поможет наглядно представить процесс поиска островов на карте.
После завершения алгоритма мы получим количество отдельных островов на карте озера и количество выполненных шагов (перемещений) в процессе поиска.
Этот проект лицензируется по лицензии MIT - подробности см. в файле LICENSE.