2015-03-30 3 views
0

Предположим, что у меня есть строка, заполненная тремя различными строками в разных ячейках, как создать алгоритм перестановки, который будет генерировать следующие выходы?Перестановка S

Вход: Кошка Собака Крыса

Ouput:

Кошка Собака Крыса

Кошка Крыса Собака

Собака Кошка Крыса

Собака Крыса C

Rat Dog Cat

Крыса Cat Dog

Большинство решений в сети генерируют комбинации вместо желаемых перестановок. Кроме того, решения, которые я нашел, включали строки только в одну ячейку. т. е .: Cat -> Cat, Cta, Atc, Act и т. д. и т. д.

Я надеюсь, что кто-то может помочь мне немного по этому поводу или, по крайней мере, предоставить отправную точку.

Большое спасибо заранее!

+0

Существует много версий строк найдите в interwebs, где вы можете обменять строку на 'String []' или лучше 'List ' и изменить ее, чтобы индексировать весь элемент в отличие от символа и вашего готового к работе. Многие * делают * правильно делают перестановки. – ChiefTwoPencils

+0

Это типичная проблема рекурсии, есть много способов ее решить. Предполагая, что это задание, я дам вам подсказку и попробую сделать все остальное. Предположим, что f (array, count, prefixArray) - это функция, которая выдает перестановки «array» длины «count» и прикрепляет элементы prefixArray в начале каждого вывода. Попробуйте определить базовый регистр и решить его, а затем найти способ решения f (array, n, prefixArray) с помощью f (array, n-1, prefixArray) –

ответ

0

1) Определите свои жетоны, токен будет строковым устройством (кошка, собака и крыса - это токен), назначьте число каждому, 0 1 2 будет работать, так как они, вероятно, перейдут к массиву.

2) гнездо для петель ??? для (i = 0 до 2) для (j = 0 до 2) для (k = 0 до 2) return arr [i] + arr [j] + arr [k]

Смежные вопросы