На входе: строчка из n букв (в основном, русских), например: “абук”, и дополнительное число m, например, 3.
Задача: сгенерировать из букв той строки ВСЕ возможные комбинации длиной m.
Количество этих комбинаций может быть достаточно велико: на первом месте одна из n букв, потом на втором одна из остальных n-1, потом одна из остальных n-2, и т.д.
Всего получается n!/(n-m)! . В вышеуказанном примере – 24 варианта, а если, например, 10 букв, из которых надо сгенерировать 5-буквенные комбинации, то их будет уже 30240.
Ну, я всё-таки довольно квалифицированный программист, поэтому вполне быстро написал эту програмку на питоне. Если кому интересно, могу показать. Но кто тут программисты, попробуйте сначала сами..
Оригинал этой записи в личном блоге.
no subject
no subject
Видимо, более простое - параллельно с массивом букв держать массив bool, показывающий, доступна ли буква, или использована.
При итерации по массиву букв пропускать использованные. Перед передачей вниз - помечать текущую как использованную. ПОсле вызова рекурсии - помечать как доступную.
no subject