算法第三章作业
1. 单调递增最长子序列题目的分析:
1.1 递归方程式
已知数组a的长度为n,设从a0到ai(0<=i<n)的最长递增子序列长度(length)为L(i),则知L(i)={max(L(j))+1,j<i}
1.2
所需填的表的维度:一维
填表范围:[0,n)
填表顺序:自左向右或自右向左
1.3
算法时间复杂度:遍历数组的所有值所需时间量级为n,再次遍历数组逐个比较以得到递增序列的时间量级也为n,故算法复杂度为O(n^2)
空间复杂度:由于数组所需的表以及所填的表均为一维的表,故空间复杂度为O(n)
2. 对于动态规划算法的理解:
若对于一个所需要求解的问题存在若干个重复的子问题,则可以根据在计算子问题最优值时得到的信息构造递归关系,从而以填表的方式利用子问题的最优解一步一步接近原问题的最优答案。
3. 结对编程情况:
在吸取了前两次的结对编程的经验教训后,上一节课的结对编程进展较为顺利,我和搭档分工会更为明确,在分析问题、有了清晰的思路后才会进行编程。