Работа №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 недели