Работа №6

Вариант 1: Архипелаг

Использовать рекурсию при решении этой задачи запрещено!

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

Программа должна найти все острова на карте и вывести их площади на экран в порядке уменьшения. Минимальный размер острова – 1 клетка.

Для островов большего размера две клетки суши объединяются только по вертикали или по горизонтали, по диагонали – нет.

Пример карты в файле:

0 1 1 0 1 0

0 1 1 0 0 0

0 0 1 1 0 1

0 1 0 0 0 0

1 1 0 0 1 1


Результат для данной карты:

6 3 2 1 1


Вариант 2: Экваториальный остров

Использовать рекурсию при решении этой задачи запрещено!

Представьте, что вы оказались на острове квадратной формы.

Ландшафт этого острова можно описать с помощью целочисленной матрицы размером M х N, каждый элемент которой задаёт высоту соответствующей области острова над уровнем моря (значения должны располагаться во внешнем файле, размер острова можно задать в программе).

Например, остров размером 3x3 может быть вот таким:

4 5 4

3 1 5

5 4 1


В сезон дождей остров полностью заливает водой, и в низинах скапливается вода. Низина - это такая область острова, клетки которой граничат с клетками, большими по высоте (граничить не обязательно явно, вокруг низины могут быть и другие клетки низины, которые граничат с клетками, большими по высоте). При этом диагональные соседи не учитываются, а уровень моря принимается за 0. В рамках работы необходимо для острова произвольного размера (чтобы вы не пугались – пусть он будет не больше чем 5х5 клеток) найти объём воды, который скапливается в его низинах

В приведённом выше примере на острове есть только одна низина - это клетка со значением 1 в середине острова (она граничит с клетками высотой 3, 5, 5 и 4).

Таким образом, после дождя высота клеток острова изменится и станет следующей:

4 5 4

3 3 5

5 4 1


Мы видим, что в данном примере высота низины изменилась с 1 до 3, после чего вода начала переливаться на соседние клетки, а затем — в море (всё что за пределами массива мы считаем морем куда всё сливается). Таким образом, для приведённого примера, общий объём воды, скопившейся на острове после сезона дождей - 2 кубические клетки.

Время на выполнение – 2 недели