beve
Осваивающий
- Сообщения
- 104
- Репутация
- 31
Имеется задачка с интернета:
Хочется найти самое оптимальное решение (чисто в познавательных целях - изучаю рекурсивные функции.)
Идея ясна, так как есть описание на форумах в интернете, идем от начала массива и если встречаем на пути 1-ницу, то заменяем ее на ноль, и дальше делаем просчет по 4 координатам и так до конца "острова"- результат заносим в счетчик и так продолжаем далее.
Для большей нагладности, начало может быть таким:
Код:
Имеется матрица (n*m) заполненная 1 и 0. Единицы - это острова, а нули - море. Если единицы находятся рядом по горизонтали или вертикали - то они образуют один остров. Найти количество островов.
P.S. Естественно могут быть "гнутые" и "дырявые" острова.
Идея ясна, так как есть описание на форумах в интернете, идем от начала массива и если встречаем на пути 1-ницу, то заменяем ее на ноль, и дальше делаем просчет по 4 координатам и так до конца "острова"- результат заносим в счетчик и так продолжаем далее.
Для большей нагладности, начало может быть таким:
Код:
#include <array.au3>
Dim $aArray[6][6] =[ _
[ 1, 0, 1, 0, 0, 1 ], _
[ 0, 1, 1, 0, 1, 0 ], _
[ 1, 0, 0, 0, 1, 1 ], _
[ 1, 1, 1, 0, 0, 1 ], _
[ 1, 0, 0, 1, 0, 1 ], _
[ 1, 1, 0, 1, 1, 0 ]]
_ArrayDisplay($aArray)