算法第三章作业
1. 作业题"单调递增最长子序列"分析。
1.1 根据最优子结构性质,列出递归方程式
设c[ ]存放输入的一组数,l[ ]存放单调递增子序列的长度,max为l[ ]中最大元素以得到最长单调递增子序列的长度
递归方程式: l[ i ] = l[ j ] + 1, c[ i ] > c[ j ] && l[ i ] < l[ j ] + 1
max = l[ i ] , max < l[ i ]
1.2 给出填表法中表的维度、填表范围和填表顺序
表的维度:一维
填表范围:(0, n]
填表顺序:从左到右
1.3 分析该算法的时间和空间复杂度
时间复杂度:O(n^2)
空间复杂度:O(n)
2. 你对动态规划算法的理解
动态规划算法与分治法类似,若对于一个所需要求解的问题存在若干个重复的子问题,都是将待求解问题分解为若干个子问题,求解子问题并合并,从而得到原问题的解。而动态规划算法则是根据在计算子问题最优值时得到的信息构造递归关系,从而以填表的方式利用子问题的最优解一步一步接近原问题的最优答案。
3. 说明结对编程情况
先是独立思考、独立编程,编程完成或是遇见困难后,再交流思路并尝试优化算法。之后互相讨论交流了各自的思路和代码。
浙公网安备 33010602011771号