算法第3章作业

1.对动态规划法的理解

动态规划和分治法有类似之处,都是将问题分解成若干个子问题进行求解,这些子问题往往都有一定的联系,动态规划法先对某个问题最优解的结构特征进行刻画,然后建立起递归方程式,然后计算出最优值,递归运算时,通常会有许多子问题被计算多次,利用动态规划,让每个子问题计算一次后保存下来,这样避免了大量的重复计算,最终可以得到多项式时间的算法,将计算出来的子问题的解记录在数组中,最终 输出结果即可。

2.编程题1、2的递归方程式

编程题1:dp[i] = max(dp[j]+1, dp[i])

编程题2:dp[1][i]=min(dp[1][i],dp[1][z]+dp[z][i])

3.说明结对编程情况

结对编程可以相互讨论问题,大大提高了学习效率,第一题求单调递增最长子序列,时间复杂度为O(n²),用两次循环进行遍历比较,存大的即可,第二题用二维数组存第i站到第j站最小的费用,还要再设立一个z,用来比较i到z z到j和i到j的费用哪个大。

posted @ 2018-11-11 21:31  Kevin_LLL  阅读(89)  评论(0)    收藏  举报