Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Лабиринт паскаль

Автор: PFanthem 14.12.2014 17:57

Пусть имеется лабиринт разбитый на клетки со стороной 1м. Длина лабиринта n, а ширина m. Закрашенная клетка -это непроходимая область, Высота лабиринта везде одинакова h=3м. Вход в лабиринт и выход расположены в левом верхнем и в правом нижнем углу. Нумерация клеток начинается из левого верхнего угла . перед открытием сезона необходимо оклеить все внутренние стены лабиринта новыми обоями .
Требуется: написать программу определения общей площади всех внутренних стен лабиринта
Вводные данные: n и m, двухмерный массив. Элементы массива принимают два значения "пусто" или "занято"

Автор: Федосеев Павел 15.12.2014 12:05

Думаю, что здесь алгоритм такой:
1. Заполняем массив лабиринта так, как описано в условии 0 - проход, 1 - стена.
2. Просматриваем лабиринт в поисках первой попавшейся 1 и 0 - пустого места рядом с ней.
3. Мысленно прижимаемся левой рукой к стене и идём вперёд, насколько позволяют стены. при этом стену, к которой прижимались рукой обозначаем не 1, а 2.
3. Движемся вперёд пока не закончится стена или не вернёмся в исходное положение.
4. Повторяем пункты 2 - 3 до полной замены всех 1 в массиве, описывающем лабиринт.

Количество 1, заменённых на 2 и есть искомый периметр стен. Осталось умножить его на высоту h и написать ответ.