算法第三章作业
1.单调递增最长子序列
1.1 递归方程式
a[n]:表示第n个数字
b[n]:表示以第n个数字为结尾的最长子序列
递归方程式 :b[j] = m(i,j) = b[i] + 1 , a[j] > a[i]
b[j] , a[j] <= a[i]
1 , j==1
1.2 表的维度是1维,即b[n], 范围是从1-n,填表顺序从左往右(从1到n)
1.3 时间复杂度:双重循环:O(n的平方)
空间复杂度:一维数组 O(n)
2.你对动态规划算法的理解
动态规划是把一个原问题拆解成一堆子问题,若这些小问题有较多重复时,则可以自底向上从最终子问题向原问题逐步求解。
动态规划算法的设计步骤:
- 找出最优解的性质,并刻画其结构特征
- 递归地定义最优解的代价
- 自底向上地计算优化解的代价保存之,并获取构造最优解的信息
- 根据构造最优解的信息构造优化解
3.说明结对编程情况
每个人先独立思考,然后交换思路,提出各自的想法和问题,再讨论得出解决办法。