Обработка решает задачу: получить из заданной строки символов все возможные их сочетания (перестановки).
Обработка показывает как в рекурсии решить задачу задачу: получить из заданной строки символов все возможные их сочетания (перестановки). Строка в обработке ограничена 10 символами. Вывод в окно сообщений. Пример на картинке.
Обработка перед выводом собирает результаты в массив, поэтому на словах больше 10 символов может закончиться доступная память. На сайте есть пример более экономно расходующий память.
Как-то так сделано или поинтересней?
«ВЫБРАТЬ
////////////////////
| «»а»» КАК буква
|ПОМЕСТИТЬ буквы
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| «»б»»
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| «»в»»
|;
|
|////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| буква1.буква КАК буква1,
| буква2.буква КАК буква2,
| буква3.буква КАК буква3
|ИЗ
| буквы КАК буква1,
| буквы КАК буква2,
| буквы КАК буква3
|ГДЕ
| буква1.буква <> буква2.буква
| И буква1.буква <> буква3.буква
| И буква2.буква <> буква3.буква»
(1) Kosstikk, нет — через рекурсивную функцию, перебирающую строку посимвольно
(2) а слово длиной 12 букв примерно за какое время раскладывает? =)
(3) Число сочетаний C = n! / k!(n — k)!
(3) Kosstikk, 🙂
попробовал — у меня не хватило памяти
8 — 3 секунды
9 — 23
10 — 4:15
(3) Kosstikk, не жрёт память вариант с выводом в конце. но это ужетема про велосипед , но там время раскладывания трудно оценить — на вывод тратится много
Упс, «съедает» одинаковые символы. Лучше написать
ПолучитьМассивСлов(Лев(тестСлово,инд-1)+Сред(тестСлово,инд+1));
(7) catena, да, спасибо
ну ничего себе