Разберём простую задачу на динамическое программирование, автором которой являюсь я сам - сочинил эту задачу для одного из контестов, а потом она попала в архив задач. Читаем условие: Задача является сильным упрощением общего случая с разделением прямоугольника размера NxM, который надо решать с помощью динамического программирования по профилю. В этой же задаче можно поступить проще, рассмотрев все варианты. Для начала считаем размер шоколадки: Сразу можем обработать случай с нечётным N, так как тогда в шоколадке будет нечётное число плиток, и её нельзя будет разделить на кусочки по две плитки: Очевидно, что состоянием в динамике будет длина шоколадки. Какие же есть переходы? Давайте нарисуем все варианты: Во-первых, можно тремя способами отделить от шоколадки кусок 3х2, получив шоколадку размера 3xN-2. Второй вариант - когда мы выходим за границы куска 3х2 (здесь, на самом деле два случая, которые симметричны друг другу). Тогда мы можем: В приведённой формуле можно сделать небольшое