 CAVE | Описание Гном Торин нашел план покинутой пещеры, в которой жил горный король Норус. На плане обозначено место, где находятся огромный клад. Горный король защитил свое богатство от искателей кладов, для чего расположил в пещере L каменных блоков, которые двигаются и могут раздавить искателя, и которые останавливаются, когда сокровища найдены. План задан в виде прямоугольной целочисленной матрицы MxN, элементами которой могут быть:
K-й блок состоит из всех элементов, обозначенных числом K. Блок не обязательно связный, но все его элементы движутся синхронно. Нули в крайних строках или столбцах матрицы обозначают входы в пещеру. Отдельно указано начальное направление движения каждого блока (1 - вверх, 2 - направо, 3 - вниз, 4 - влево). Гном занимает клетку-вход. После этого он движется по таким правилам: на протяжении каждой секунды первым перемещается гном на пустую клетку из 4-х соседних (вверх, вниз, влево или направо) или остается на месте. Потом, на протяжении той же секунды, перемещается каждый блок на одну клетку (вверх, вниз, влево или направо): сначала первый, за ним второй и т.д. Если перед каким-нибудь элементом в направлении его движения находится стена, край пещеры, клад или другой блок, то на этом ходе блок не движется, а направление его движения изменяется на противоположное. Если блок во время движения попал в клетку с гномом, то гном гибнет. Задание Написать программу CAVE для поиска безопасного пути, который приведет к кладу за наименьшее время, считая, что такой путь существует. Входные данные Входной текстовый файл CAVE.DAT в первой строке содержит два числа M, N та L-количество блоков (3<=M<=75, 3<=N<=75, 0<=L<=1000). В следующих M строках содержаться N целых чисел - план пещеры. В следующих L строках заданы начальные направления их движения в порядке увеличения номеров. Выходные данные Выходной текстовый файл CAVE.SOL в первой строке должен содержать число K - время прохождения пути в секундах. В следующих K+1 строках - координаты положения гнома в каждую секунду (начиная с координат входа). Координаты должны быть заданы в порядке "строка столбец". Если существует несколько путей, достаточно указать один из них. Например: CAVE.DAT 4 5 1 -1 -1 -1 -1 -1 -1 0 1 0 -1 0 0 0 -2 -1 -1 -1 -1 -1 -1 1 CAVE.SOL 5 3 1 3 2 2 2 2 3 2 4 3 4
|
|---|