Учитывая произвольную строку текста, задача состоит в том, чтобы сгруппировать текст в отдельные разделы шаблона. Каждый раздел имеет разные параметры минимальной и максимальной длины. Решение можно считать оптимальным для участка, если оно находится в этих пределах. Жадное решение может привести к тому, что некоторые разделы не будут соответствовать своим минимумам, что означает, что решение в целом неприемлемо.
У меня возникли проблемы с эффективным построением алгоритма для этого. Кажется, что подход динамического программирования мог бы помочь, но до сих пор мне не удавалось сформулировать его в терминах динамического программирования. У кого-нибудь есть наводки по решению этой проблемы?
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 em> и наш шаблон t в функцию groupText. groupText должен возвращать массив, в котором каждый элемент i соответствует разделу. Например, элемент 0 будет соответствовать s1. Значением элемента будет текст, присвоенный разделу.
В этом примере может быть решение.
s1text = "Это "
s2text = "это тест".