Помощь - Поиск - Пользователи - Календарь
Полная версия: Лабиринт паскаль
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
PFanthem
Пусть имеется лабиринт разбитый на клетки со стороной 1м. Длина лабиринта n, а ширина m. Закрашенная клетка -это непроходимая область, Высота лабиринта везде одинакова h=3м. Вход в лабиринт и выход расположены в левом верхнем и в правом нижнем углу. Нумерация клеток начинается из левого верхнего угла . перед открытием сезона необходимо оклеить все внутренние стены лабиринта новыми обоями .
Требуется: написать программу определения общей площади всех внутренних стен лабиринта
Вводные данные: n и m, двухмерный массив. Элементы массива принимают два значения "пусто" или "занято"
Федосеев Павел
Думаю, что здесь алгоритм такой:
1. Заполняем массив лабиринта так, как описано в условии 0 - проход, 1 - стена.
2. Просматриваем лабиринт в поисках первой попавшейся 1 и 0 - пустого места рядом с ней.
3. Мысленно прижимаемся левой рукой к стене и идём вперёд, насколько позволяют стены. при этом стену, к которой прижимались рукой обозначаем не 1, а 2.
3. Движемся вперёд пока не закончится стена или не вернёмся в исходное положение.
4. Повторяем пункты 2 - 3 до полной замены всех 1 в массиве, описывающем лабиринт.

Количество 1, заменённых на 2 и есть искомый периметр стен. Осталось умножить его на высоту h и написать ответ.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.