DP是一种解决可分解为子问题的优化,搜索和计数问题的通用技术。只要当问题的解是与子问题相关的,我们就应该考虑用DP。与分治法相似,DP通过结合多个小问题的解来解决问题,但是DP的不同在于相同的子问题有可能会重现。因此让DP高效的关键在于缓存中间的计算结果。用DP来求解的问题是常见的高难度面试问题。