Алгоритм генерации разных ордеров

Я пытаюсь написать простой алгоритм, генерирующий разные наборы

(cba) (cab) (bac) (bca) (acb) из (abc)

, выполнив две операции:

поменять местами первый и второй элементы ввода (abc), поэтому я получаю (bac)

, затем сдвигаю первый элемент к последнему => ввод (bac), вывод равно (acb)

, поэтому окончательный результат этой процедуры равен (acb).

Конечно, этот метод генерирует только a c b и a b c. Мне было интересно, достаточно ли использования этих двух операций (возможно, с использованием 2 обменов подряд, а затем сдвига или любого другого варианта) для создания всех разных порядков?

Я хотел бы придумать простой алгоритм, не используя > < или + , просто многократно меняя определенные позиции (например, всегда меняя местами 1 и 2) и всегда сдвигая определенные позиции (например, сдвигая 1-й элемент на последний). ).

6
задан Murat Derya Özen 8 March 2012 в 21:57
поделиться