dfs + memoization = dp
во многих задачах.
по определению dp должен иметь "оптимальную подструктуру".
это означает, что вы можете использовать вспомогательное решение для получения обобщенного решения.
другими словами, просто сказав, что вы выразите f (n), используя f (n-1) или около того.
и это рекурсивное выражение может быть непосредственно закодировано с использованием dfs.
и для того, чтобы воспользоваться преимуществами предварительно рассчитанного под-решения или подструктуры, вы кешируете под-решение, используя памятку.
и это все, что представляет собой dp.
ps, конечно, вы можете использовать метод итеративного цикла для заполнения кэша вместо подхода dfs + памятка.но ответить на ваш вопрос может только затруднить понимание.