Как распознать проблему?
Ее можно разбить на маленькие под проблемы, которые пересекаются
У проблемы есть оптимальные подструктура, где оптимальное решение формируется из оптимальных пересекающихся подрешений оригинальной проблемы
3 главные компоненты, которые нужно запомнить и при построении задачи решить:
Рекурсивный подсчет: Когда статичные значения для изменения state:
dp(i)=min(dp(i - 1) + cost[i - 1], dp(i - 2) + cost[i - 2])
Когда изменения не статичны и зависят от чего-то:
dp(i)=min(dp(j) + cost[j]) for all