Существует много проблем, которые могут быть решены с помощью динамического программирования, например. Наибольшая возрастающая подпоследовательность. Эту проблему можно решить, используя 2 подхода
- Memoization (Top Down) - использование рекурсии для решения подзадачи и сохранения результата в некоторой хэш-таблице.
- Табуляция (снизу вверх) - использование итеративного подхода для решения проблемы путем решения меньших подзадач сначала, а затем использования ее во время выполнения более крупной проблемы.
Мой вопрос в том, что лучше подходит с точки зрения сложности времени и пространства?