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

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

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

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

9 Comments

  1. Kosstikk

    Как-то так сделано или поинтересней?

    «ВЫБРАТЬ

    | «»а»» КАК буква

    |ПОМЕСТИТЬ буквы

    |

    |ОБЪЕДИНИТЬ ВСЕ

    |

    |ВЫБРАТЬ

    | «»б»»

    |

    |ОБЪЕДИНИТЬ ВСЕ

    |

    |ВЫБРАТЬ

    | «»в»»

    |;

    |

    |////////////////////////////////////////////////////////////­////////////////////

    |ВЫБРАТЬ РАЗЛИЧНЫЕ

    | буква1.буква КАК буква1,

    | буква2.буква КАК буква2,

    | буква3.буква КАК буква3

    |ИЗ

    | буквы КАК буква1,

    | буквы КАК буква2,

    | буквы КАК буква3

    |ГДЕ

    | буква1.буква <> буква2.буква

    | И буква1.буква <> буква3.буква

    | И буква2.буква <> буква3.буква»

    Reply
  2. taiba

    (1) Kosstikk, нет — через рекурсивную функцию, перебирающую строку посимвольно

    Reply
  3. Kosstikk

    (2) а слово длиной 12 букв примерно за какое время раскладывает? =)

    Reply
  4. Поручик

    (3) Число сочетаний C = n! / k!(n — k)!

    Reply
  5. taiba

    (3) Kosstikk, 🙂

    попробовал — у меня не хватило памяти

    8 — 3 секунды

    9 — 23

    10 — 4:15

    Reply
  6. taiba

    (3) Kosstikk, не жрёт память вариант с выводом в конце. но это уже тема про велосипед, но там время раскладывания трудно оценить — на вывод тратится много

    Reply
  7. catena

    Упс, «съедает» одинаковые символы. Лучше написать

    ПолучитьМассивСлов(Лев(тестСлово,инд-1)+Сред(тестСлово,инд+1));

    Reply
  8. taiba

    (7) catena, да, спасибо

    Reply
  9. user956476

    ну ничего себе

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *