基本思想:将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。求解过程中,为避免对相同的子问题重复求解,用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中
算法设计步骤: 1)找出最优解的性质,并刻画其结构特征; 2)递归地定义最优值; 3)以自底向上的方式计算出最优值; 4)根据计算最优值时得到的信息,构造最优解;
基本要素:(1) 最优子结构性质(2)子问题重叠性质
经典例题:矩阵连乘积问题、0-1背包问题、最长公共子序列问题、最大子段和问题等