算法第三章作业
对动态规划法的理解
动态规划法适用于解最优化问题,通常可分为四个步骤:
1.找出最优解的性质,并刻画其结构特征;
2.递归地定义最优值;
3.以自底向上的方式计算出最优解;
4.根据计算最优解时得到的信息,构造最优解。
其中我认为,最重要的是第2、3步,我们要首先写出一道题目的递归方程,然后根据题目的要求,画出二维或者是一维的表,这样可以更加便捷的找到题目中各项数据的联系。
在解决一些问题的时候,我们往往会因为重复计算子问题而倒是时间复杂度变大,而动态规划巧妙地避开了这个问题,她是把每一个子问题的答案记录下来,等到要调用的时候,就可以轻松地填入数据了。
单调递增最长子序列、租用游艇问题递归方程
单调递增最长子序列:当满足a[j] < a[i] && b[j] > b[i] - 1时,b[i] = max(1, b[j] + 1)
dp[ i ] 表示到i站时的最小租金:b[1][n] = min(b[1][n-1] + b[n-1][n],b[1][n])
结对编程情况
当两个人对题目都比较苦手的时候,就要更加耐心、细心地分析问题。这次我和搭档在结对编程过程中对动态规划都不是十分熟练,但是我们都有耐心地审题和画图,多次下来就逐渐看到了自己的错误点。