算法第三章作业
1.对动态规划算法的理解:
动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应一个值,我们希望能找到具有最优值的解。动态规划算法与分治法类似,基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解中进而得到原问题的解。这种方法与分治法有所不同,需要动态规划得到解的问题经过分解后得到子问题一般是不互相独立的。用分治法求解并不是最佳选择。如果我们将已经求解得到的子问题的解通过一个表记录起来,在以后如果有用到重复的问题,就可以将计算过的结果拿过来使用,这样可以避免重复计算,节约时间。
2.编程题1,2的递归方程:
第一题: dp[i]=max(dp[i],dp[j]+1),dp[i]是以a[i]为末位的最长单调增子序列的长度
第二题: a[i][j]=min{a[i][k]+a[k][j]},i<k<j.
3.结队编程情况:
我觉得结队编程最好的一个地方就是,能和同伴说出自己的想法,并且能和队友一起探讨想法的对错,同时也让我能从不同的角度思考用一个问题,拓宽了我的思考角度。

浙公网安备 33010602011771号