Комбинаторика. Существует ли алгоритм, который при неизвестном количестве символов создает из них все комбинации?

Существует ли такой алгоритм, который на вход получает несколько символов/букв записывает все возможные комбинации, при условии, что количество символов неизвестно?
Пример: вводим цифру 3. Она означает, что будут введены 3 символа. Затем вводятся 2, 3, 4 это наши буквы/символы/цифры.
И на выходе программа выдаёт :
234
243
342
324
423
432
Заране спасибо.
9 года назад от Вспомнить Всё

1 ответ

0 голосов
Простейший рекурсивный алгоритм:

Если на вход подпрограммы подана пустая строка - выводим перевод строки и выходим из подпрограммы.

Если на вход подпрограммы подана не пустая строка: в цикле выводим очередной символ этой строки, а исходную строку без этого символа рекурсивно подаем на вход этой же подпрограммы.

Т. е. F ("abc") выдаст: "a", F ("bc") , "b", F ("ac") , "c", F ("ab") .
F ("bc") выдаст: "b", F ("c") , "c", F ("b") .
F ("c") выдаст: "c", F ("") .
F ("") выдаст перевод строки.
И т. д.

Получим:
abc
acb
bac
bca
cab
cba
9 года назад от Шакир Бармаков

Связанные вопросы