Вам дана длинная строка ( S ) и список запрещенных подстрок ( F ). Цель состоит в том, чтобы разделить ( S ) на минимально возможное количество непустых сегментов так, чтобы:
[*]Ни один сегмент не содержит запрещенных подстроок
Ни один сегмент не содержит запрещенных подстроок
strong> из списка ( F ).
[*]Общее количество сегментов сведено к минимуму[/b].
[*] разница в длине между сегментами должна быть как можно меньше — другими словами, сегменты должны быть близки друг к другу по размеру.
[*]Если невозможно добиться корректной сегментации, вывести сообщение об ошибке.
[*]Рассмотрим случаи, когда ( S ) имеет повторяющиеся шаблоны или содержит каждую из запрещенных подстрок.
< /ol>
Пример:
- Ввод: ( S = "abcdeabc" ), ( F = ["bc", "de", "abcd"] )
- Вывод: сегментация, такая как (["a", "bcd", "eabc "]) будет недопустимым, поскольку содержит запрещенные подстроки. Наименьшей допустимой сегментацией может быть (["abc", "deabc"]) при условии соблюдения всех условий.
Подробнее здесь: https://stackoverflow.com/questions/791 ... onstraints
Мобильная версия