Учитывая произвольную строку текста, задача состоит в том, чтобы сгруппировать текст в отдельные разделы шаблона.Каждый раздел имеет разные параметры минимальной длины и максимальной длины.Решение можно считать оптимальным для сечения, если оно попадает в эти границы.Жадное решение может привести к тому, что некоторые разделы не будут соответствовать их минимумам, что означает, что решение в целом неприемлемо.
У меня проблемы с эффективностью построения алгоритма для этого.Кажется, что подход динамического программирования мог бы помочь, но до сих пор я не смог сформулировать его в терминах динамического программирования.У кого-нибудь есть какие-то подсказки по решению этой проблемы?
function groupText(str, template)
Inputs:
str: a string of text
template: array of JavaScript objects.
One object per section that describes the min/max amount of text allowed
Output:
array: each element corresponds to one section.
The value of the element is the text that is in the section.
В качестве примера давайте определим строку str, равную «Это тест».У нас также есть шаблон t . t состоит из нескольких разделов.Каждый раздел s имеет минимальное и максимальное количество символов.Допустим, для этого примера есть только два раздела: s1 и s2 . s1 имеет минимум 1 символ и максимум 100. s2 содержит минимум 10 символов и максимум 15. Мы передаем нашу строку str инаш шаблон t для функции groupText . groupText должен возвращать массив с каждым элементом i , соответствующим разделу.Например, элемент 0 будет соответствовать s1 .Значением элемента будет текст, который был назначен разделу.
В этом примере решение может быть следующим:
s1text = "Этот"
s2text = "является тестом. "