Я работаю над проектом и застреваю в точке, о которой я расскажу ниже. У меня есть наборы разрешений. P0, P1 и т. Д. Разрешения могут быть индивидуальными, например, P0, P1, P2 и т. Д. Или в группах P1P2, P3P4P5, P1P7P11P34 ...... разрешения обрабатываются как строки, и мы имеем их в отсортированном порядке (по длине). Вот один из возможных последовательностей входных строк: P1 P2 P4 P23 P0P1 P3P5 P8P13P45P67 .......... .......Создание различных комбинаций строки в python
Теперь моя работа чтобы увидеть, может ли каждая длинная строка быть сформирована некоторой комбинацией меньших строк. То, что я делаю, я вставляю строки в trie и проверяю, могут ли большие строки быть сделаны с использованием предыдущей строки. Если да, я ничего не делаю; в противном случае, я помещал последнюю увиденную строку в trie.
Проблема у меня в том, что по мере увеличения длины строк мне нужно выполнить перестановки/комбинации строк и проверить, присутствуют они или нет. Теперь классические перестановки строк не будут работать, потому что сначала я должен иметь все перестановки вместе (не один за другим), чтобы проверить, находятся ли они в trie. Перестановка носит порядок, поэтому P0P1 возможен, а не P1P0. Кроме того, существует слишком много перестановок.
Я приводил пример различных комбинаций, чтобы сделать его более понятным. Предположим, у меня есть новая строка разрешений, такая как P0P1P2. Различные комбинации, которые я должен проверить, прежде чем объявить, что мои предыдущие записи в trie не подходят для построения строки.
Обратите внимание, что перестановка не должна содержать никаких разрешений не в строке назначения (новый ввод).
P0 P1 P2 P0P1 P2 P0P1 P1P2 P0P1 P0P2 P0P2 P1 P0P2 P0P1 P0 P1P2
Я застрял в этой точке и хочу знать, если есть какой-то алгоритм, который генерирует такие комбинации для очень больших строк, или я должен бросить эту идею и пойти в другом маршруте.
Как вы уже знаете, это не простая задача. Разрешено ли вам дублирование? Например, вы можете сделать P0P1P2 только с P0P1 и P1P2? Должны ли разрешения быть смежными - можете ли вы сделать P0P1P2 из P0P2 и P1? Эти спецификации сильно влияют на приложение. – Prune
Да Мне разрешено делать P0P1P2 из P0P1 и P1P2, а также из P0P2 и P1 ... – djtama
Что вы можете сделать: разрешено ли P0P1P2 делать из «P0P3',' P1P3' и 'P2P3'? – schwobaseggl