Ханойская башня
Время: 1 s · Память: 256 MB
- Рекурсия
Условие
Есть три стержня (, , ). На стержне лежат дисков: внизу самый большой, выше — всё меньше. Нужно перенести все диски на стержень . Правила: за ход берётся только один диск — верхний с какого-либо стержня — и кладётся на другой; больший диск нельзя класть на меньший.
Перенесите диски за наименьшее число ходов и выведите ходы по порядку.
Формат ввода
В одной строке , , (; , ).
Формат вывода
В первой строке число ходов. Затем каждый ход в отдельной строке: номер стержня, откуда берём, и куда кладём.
Примеры
Ввод
2 1 3
Вывод
3 1 2 1 3 2 3
Ввод
1 2 1
Вывод
1 2 1
Примечание
Чтобы перенести дисков с на : перенесите верхние дисков на третий стержень (), положите самый большой на , затем перенесите дисков с третьего стержня на . Базовый случай: — ничего не делаем. Ходов , а последовательность с наименьшим числом ходов единственна.
Первый пример: малый диск , большой , малый .
