第三章动态规划

 1.单调递增最长子序列问题

  ①问题描述:设计一个O(n2)时间的算法,找出由n个数组成的序列的最长单调递增子序列。

  ②解题思路:对于长度为x的序列,若其结尾的数字比长度为x-1的序列最长递增子序列大,则其最长递增子序列为长度为x-1序列的最长递增子序列+1

        故其递推方程为:

                 

 

        可以用动态规划法求解。

 

2. 动态规划

  解题步骤:

  ①分析问题:(可以画图,或依据具体例子)是否将大问题拆成几个小问题,是否存在最优子结构,是否满足无后效性(如果给定某一阶段的状态,则在这一阶段以后过程的发展不受这阶段以前各段状态的影响),能否使用动态规划解决。

  ②设计状态:对于状态x,记我们要求出的答案(e.g. 最小费用)为f(x).我们的目标是求出f(T).找出f(x)与哪些局面有关(记为p),写出一个式子(称为状态转移方程),通过f(p)来推出f(x).

  ③写出递推方程,

  ④编程实现:维度选择:因为要递推求解f(x),所以一般一个参数一个维度。求解顺序(填表顺序):根据递推关系式推断,子问题先填

 

3.结对编程情况

  陈楚权打代码,我写递归方程式。各自思考,再相互探讨

posted @ 2020-10-29 19:50  Clearwings  阅读(141)  评论(0编辑  收藏  举报