Вот задача , помеченная как динамическое программирование (Учитывая число N, найти количество способов записать это как сумму двух или более последовательных целых чисел) и пример 15 = 7 + 8, 1 + 2 + 3 + 4 + 5, 4 + 5 + 6
Я решил с помощью такой математики :
a + (a + 1) + (a + 2) + (a + 3) + ... + (a + k) = N
(k + 1) * a + (1 + 2 + 3 + ... + k) = N
(k + 1) a + k (k + 1) / 2 = N
(k + 1) * (2 * a + k) / 2 = N
Затем проверьте, что если N делится на (k + 1) и (2 * a + k), то я могу найти ответ за время O (sqrt (N))
Вот мой вопрос, как вы можете решить эту проблему с помощью динамического программирования ? а в чем сложность (О)?
PS: извините, если это повторяющийся вопрос. Я искал, но смог найти