eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Ханойские башни

Ханойские башни

Каждому программисту известна головоломка "Ханойские башни". Кратко напомним ее условие. Имеются \textbf{3} стержня: \textbf{A}, \textbf{B}, \textbf{C}. Изначально \textbf{n} дисков разного диаметра находятся на стержне \textbf{A}: наименьший диск расположен сверху, и далее к низу по возрастанию диаметра. Второй и третий стержни пустые. Необходимо переместить все диски со стержня \textbf{A} на стержень \textbf{B} используя \textbf{C} как дополнительный. За один шаг разрешается снять \textbf{1} верхний диск и положить его либо на пустой стержень, либо на другой стержень на диск с большим диаметром. Почти все книги по программированию содержат рекурсивное решение этой задачи. Далее приведена процедура на языке Паскаль. \textbf{Procedure Hanoi (A, B, C: integer; N:integer);} \textbf{Begin} \textbf{If N>0 then} \textbf{Begin} \textbf{Hanoi (A, C, B, N-1);} \textbf{Writeln(‘Disk ’, N, ‘ from ‘, A, ‘ to ‘, B);} \textbf{Hanoi (C, B, A, N-1)} \textbf{End} \textbf{End;} Например, комбинация "\textbf{BСA}" обозначает, что наименьший диск расположен на стержне \textbf{B}, средний на стержне \textbf{С}, а наибольший на стержне \textbf{A}. Члены жюри, готовясь к соревнованию, иногда играют в эту игру, записывая текущие комбинации (каждую на отдельном листке бумаги). Однако позже все эти листки перемешались. Напишите программу, которая установит, встречалась ли указанная комбинация в игре. \InputFile Первая строка содержит два числа \textbf{n }(\textbf{1 }≤ \textbf{n }≤ \textbf{250}) -- число дисков, и \textbf{m} (\textbf{1 }≤ \textbf{m }≤ \textbf{1000}) - количество комбинаций. Следующие \textbf{m} строк содержат \textbf{m} комбинаций. Каждая комбинация состоит из \textbf{n} заглавных букв ("\textbf{A}", "\textbf{B}" или "\textbf{C}") - расположение \textbf{n} дисков на стержнях. Первая (левая) буква указывает на позицию (имя стержня) наименьшего диска, вторая буква - на позицию второго наибольшего диска и так далее. \OutputFile Вывести \textbf{m} строк -- \textbf{m} комбинаций, отсортированных в порядке их следования в игре.
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
3 4
ACB
BCA
ABB
BAA
Выходные данные #1
BAA
BCA
ACB
ABB
Источник 2013-2014 ACM Central Region of Russia Quarterfinal, Rybinsk 2013/10/17