算法第三章作业
一. 对动态规划的理解
动态规划通常用于求解具有某种最优性质的问题。在这类问题中,可能会出现许多可行解,每一个解对应于一个值,动态规划可以帮助我们找到具有最优值的解。动态规划的基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,可以用动态规划求解的问题,分解得到的子问题不是相互独立的,而分治法却会出现有些子问题被重复计算很多次的情况,动态规划可以避免大量的重复计算。
二. 递归方程
1.
dp[i] = max(dp[j]+1, dp[i])
d[i] = 长度为i+1的递增子序列的长度
2.
r(i,j) = min(r(i,k)+r(k,j)) (i<k<j) , r(i,i) = 0
三. 结对编程
在结对编程的过程中,可以找到解决一个问题的不同思路。解题时分工合作,也加快了解题的效率。