gifts2017

Перестановки символов

Опубликовал Виктор Клевцов (taiba) в раздел Программирование - Практика программирования

Обработка решает задачу: получить из заданной строки символов все возможные их сочетания (перестановки).

Обработка показывает как в рекурсии решить задачу задачу: получить из заданной строки символов все возможные их сочетания (перестановки). Строка в обработке ограничена 10 символами. Вывод в окно сообщений. Пример на картинке.

Обработка перед выводом собирает результаты в массив, поэтому на словах больше 10 символов может закончиться доступная память. На сайте есть пример более экономно расходующий память.

Скачать файлы

Наименование Файл Версия Размер
ПерестановкиСимволов.epf 10
.epf 6,54Kb
22.05.13
10
.epf 6,54Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Константин - (Kosstikk) 21.05.13 15:21
Как-то так сделано или поинтересней?


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