Я працюю над наступною проблемою з цієї книги .
Певна мова обробці рядків пропонує примітивну операцію, яка розбиває рядок на дві частини. Оскільки ця операція передбачає копіювання початкового рядка, то на рядок довжиною n потрібно n одиниць часу, незалежно від місця розрізу. Припустимо, тепер ви хочете розірвати рядок на багато частин. Порядок, в якому робляться перерви, може впливати на загальний час роботи. Наприклад, якщо ви хочете вирізати 20-символьний рядок у позиціях та , тоді перший розріз у позиції приводить до загальної вартості , тоді як виконання позиції 10 спочатку має кращу вартість .
Мені потрібен алгоритм динамічного програмування, який, даючи скорочення, знаходить мінімальну вартість розрізання рядка в штуку.