算法第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的费用哪个大。

浙公网安备 33010602011771号