Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Алгоритмы
Курсы ККДП
Дистрибутивы
Ссылки

HotLog


 

Лабиринт

(Время: 1 сек. Память: 16 Мб Сложность: 47%)

Для решения этой задачи следует применить волновой алгоритм (поиск в ширину). Для хранения информации о лабиринте удобно использовать 3х-мерный массив, который сразу следует заполнить элементами согласно входным данным. Далее, следует пометить те ячейки, в которые принц из начальной точки может попасть за один ход, далее помечаются ячейки, в которые принц попадет ровно за 2 хода, это достигается перебором ранее помеченных одним ходом принца ячеек и т.д.: на k-м шаге помечаются ячейки, в которые принц попадет за k шагов путем перебора предыдущих ячеек с расстоянием k-1. Процесс продолжается до тех пор, пока на некотором шаге мы не достигнем принцессы, в момент достижения в качестве ответа следует вывести значение 5*k.

Для хранения координат ячеек на предыдущем шаге можно использовать как стек, так и очередь. Не стоит полностью пробегать по всему 3х-мерному массиву, выискивая помеченные ячейки шагом k-1, чтобы сделать пометку в k шагов, такое решение может не пройти по времени в силу данных ограничений. Поиск в глубину здесь еще более неразумен.


[Обсуждение] [Все попытки] [Задача]


Красноярский краевой Дворец пионеров, (c)2006 - 2020, E-mail: admin@acmp.ru