Есть единицы, нули и 'Us в определенном порядке. (Например, "1001UU0011" ) Количество единиц и нулей одинаковое, а theres всегда два "Us рядом друг с другом". Вы можете поменять пару "Нас" на любую пару смежных цифр. Вот пример:
__
/ \
1100UU0011 --> 11001100UU
Задача состоит в том, чтобы поместить все нули перед ними.
Здесь примерное решение:
First step:
__
/ \
1100UU0011
Second step:
____
/ \
UU00110011
000011UU11 --> DONE
Его довольно легко создать алгоритм грубой силы. Но для этого требуется сотни или даже тысячи шагов, чтобы решить простой, как мой пример. Итак, я ищу что-то более "умное" алгоритм.
Это не домашнее задание; это была задача в конкурсе. Конкурс закончился, но я не могу найти решение для этого.
Изменить. Задача здесь - создать алгоритм, который может сортировать эти 0 и 1, а не только выводить N 0 и N 1 и 2 Us. Вы должны каким-то образом показать шаги, как в моем примере.
Изменить 2. Задача не запрашивала результат с наименьшими ходами или что-то в этом роде. Но лично мне бы хотелось увидеть алгоритм, который предусматривает, что:)