Другие языки программирования и технологии

Задача на паскале

Народ! Есть такая задача: Король шахматной доски размером 8х8 находится на коне в одной из клеток своего королевства. Он очень озабочен тем, что некоторые клетки его королевства стали непригодными для путешествия верхом. Поэтому он хочет как можно быстрее добраться в свой замок (наш король всегда путешествует на коне). Вам предстоит выяснить для него [оптимальный] маршрут или выяснить, что такого не существует. Входные данные Во входном файле в первой строке содержится индекс клетки, в которой находится король (доска прономерована от 'A' до 'H' слева направо и от 1 до 8 снизу вверх). Во второй строке находится индекс клетки, в которой находится замок короля. В третьей строке без пробелов перечислены клетки, по которым нельзя проехать верхом. Выходные данные В выходной файл необходимо вывести маршрут короля без пробелов в том же формате или число 0, если маршрута не существует. Пример Ввод A1 A2 B4B3 Вывод A1C2E1D3C1A2 Что нужно знать для решения этой задачи? Я где-то прочитал что необходимо знание графов! Можно как то без них обойтись? Подскажите наиболее рациональное решение пожалуйста, т.к. я не имею ни малейшего представления как решать подобные задачи. И если не трудно дайте литературу по подготовке к олимпиадам и методы решения задач! Буду очень признателен!
Знание графов предлагалось потому, что к ним можно свести многие проблемы. Это просто, скажем так, набор ячеек (клеток) , которые соединены с другими клетками (в графе представлено в виде кругов с линиями между ними) . Теперь алгоритм. В графе это работало бы при помощи например широкого поиска. Во первых каждой клетке добавь маркер посещаемости. Ты начинаешь с начальной позиции, рассматриваешь все другие позиции, которые ты можешь достичь через 1 ход и сохраняешь их, при этом маркируешь, что побывал в найденых клетках. На следующий ход ты рассматриваешь все позиции, которые доступны из сохранённых позиций (через 2 хода) и снова запоминаешь их, если они еще не помечены. И так далее. Кротчайший путь ты найдешь через x ходов и этот путь как раз имеет длину x. Думаю не стоит объяснять, что каждая клетка будет посещаться в самые кротчайшие сроки.

P.S. Что бы запомнить путь по быстрому, можно помимо маркера дать каждой клетке еще и запись о том, из какого поля была посещена клетка. Тогда, начиная с финиша, ты можешь проследить путь. Этот алгоритм может найти кротчайшие пути во все клетки из одной исходной клетки и использует в худшем случае (Количество клеток + количество соединений между клетками) проверок (времени).
Гена Тарасевич
Гена Тарасевич
92 808
Лучший ответ
Вообще не простое задание, самое интересное, что ход конём предполагает разные пути и в одном случае можно "проехать верхом", а в другом нет.
Но всё равно всё можно решить, например, с помощью рекурсивной функции!
можно конечно и без графов, потому что даже маленькие дети некоторые их законы использую, сами того не понимая.. . С графами конечно проще. Решение с ходу приходит только одно - нужно прогверять все пути и оценивать их длину друг относительно друга
увы но бесплатно скорее всего решать задачу не будет; почитай мануал по делфям Гофмана