Я пытаюсь написать простой алгоритм, генерирующий разные наборы
(cba) (cab) (bac) (bca) (acb) из (abc)
, выполнив две операции:
поменять местами первый и второй элементы ввода (abc), поэтому я получаю (bac)
, затем сдвигаю первый элемент к последнему => ввод (bac), вывод равно (acb)
, поэтому окончательный результат этой процедуры равен (acb).
Конечно, этот метод генерирует только a c b и a b c. Мне было интересно, достаточно ли использования этих двух операций (возможно, с использованием 2 обменов подряд, а затем сдвига или любого другого варианта) для создания всех разных порядков?
Я хотел бы придумать простой алгоритм, не используя > < или + , просто многократно меняя определенные позиции (например, всегда меняя местами 1 и 2) и всегда сдвигая определенные позиции (например, сдвигая 1-й элемент на последний). ).