И DP, и жадный алгоритм требуют оптимальной подструктуры. Отличие: жадный алгоритм также требует свойства жадного выбора (локальный оптимум является глобальным оптимумом), в то время как DP нужен, когда вы должны рассмотреть несколько вариантов выбора и перекрывающиеся подзадачи.
