Предположим, что у меня есть строка, заполненная тремя различными строками в разных ячейках, как создать алгоритм перестановки, который будет генерировать следующие выходы?Перестановка S
Вход: Кошка Собака Крыса
Ouput:
Кошка Собака Крыса
Кошка Крыса Собака
Собака Кошка Крыса
Собака Крыса C
Rat Dog Cat
Крыса Cat Dog
Большинство решений в сети генерируют комбинации вместо желаемых перестановок. Кроме того, решения, которые я нашел, включали строки только в одну ячейку. т. е .: Cat -> Cat, Cta, Atc, Act и т. д. и т. д.
Я надеюсь, что кто-то может помочь мне немного по этому поводу или, по крайней мере, предоставить отправную точку.
Большое спасибо заранее!
Существует много версий строк найдите в interwebs, где вы можете обменять строку на 'String []' или лучше 'List' и изменить ее, чтобы индексировать весь элемент в отличие от символа и вашего готового к работе. Многие * делают * правильно делают перестановки. –
ChiefTwoPencils
Это типичная проблема рекурсии, есть много способов ее решить. Предполагая, что это задание, я дам вам подсказку и попробую сделать все остальное. Предположим, что f (array, count, prefixArray) - это функция, которая выдает перестановки «array» длины «count» и прикрепляет элементы prefixArray в начале каждого вывода. Попробуйте определить базовый регистр и решить его, а затем найти способ решения f (array, n, prefixArray) с помощью f (array, n-1, prefixArray) –