算法第3章作业
1.对动态规划的理解
动态规划适用条件:同时满足最优子结构和重叠子问题。
最优子结构:问题的最优解包含了子问题的最优解。
重叠子问题:在利用递归解决问题时,有些问题总是被重复计算,效率低下。而动态规划对每个子问题只解一次,把结果保存在表格中,通常只需要多项式时间就可以解决。
2.编程题递归方程
(1)设dp[i]为以i为最后一位的最长上升子序列的长度,那么令dp[1]=1,dp[i] = max( dp[i], dp[j] + 1 ) ( j < i )&&(a[j]<a[i])。
(2)设dp[i]为所需最小代价,初始化每个dp为inf,令dp[1] = 0,dp[i]=min(min(dp[i],dp[i-1]+a[i-1][i]),dp[j]+a[j][i])。
3.结对编程情况
在跟队友讲解思路的过程中,我的的思路变得更加清晰了。同时队友也帮忙指出了错误,弥补了代码的漏洞。