确定这道题使用动规来写

当你求得一个父集需要用到子集的元素时,简单来说就是你解大规模问题,可以划分成数个小规模问题来解决时。

确定dp数字的每一维度的含义。

以此来区分不同的子集与父集,可以用来表示

确定状态转移方程

动态规划需要使用之前子集的计算结果来得出父集,然后通过父集得出父父集,最终得出队中答案。

确定动态规划的边界情况

就是说,有讨论意义的范围

根据边界情况以及实际问题来确定遍历的方向

注意,先得出小规模,在计算大规模。

自底向上的动态规划

意思就是任何子问题的求解都只依赖于更小的子问题的求解。因为我们可以将子问题按规模排序,按从小到大排序。当求解每个子问题时,它所依赖的那些更小的子问题都已经求解完毕,结果已经保存每个子问题只需要求解一次,当我们求解它时,它的所有前提子问题已经求解完成。
image.png
就比如下面的转移方程,因为rec[i][j]依赖于rec[i][k]以及rec[j][k],而k在i和j之间,这就代表当前的子集依赖于更小的j以及更大的i。所以循环遍历的方向应该是i从大到小,而j从小到大。