Пусть 'Perms' будет набором найденных перестановок, а 'Used' будет списком выбранных символов.
Чтобы найти перестановки n символов из набора S:
- Если n = 0, то используется перестановка. Добавьте его в Пермь и верните.
- Для каждого символа C в S:
- Удалить C из S и добавить (или протолкнуть) его к U.
- Найти перестановки n-1 символов из S.
- Удалите конец (или щелчок) U и добавьте C к S.
Когда вы вернулись из поиска перестановок из n символов, Perms содержит все возможные перестановки.
Обратите внимание, все это делается с помощью наборов и списков. Есть более легкие альтернативы, но эти структуры делают шаги более простыми, поэтому я использовал их.