算法第3章作业
1、对动态规划算法的理解
动态规划算法与分治法很类似,把一个复杂问题分解成多个子问题分别求解,但不同的是动态规划中,子问题不是独立的,必须要优先算出部分子问题才可以计算出剩下子问题的解。而且一般都遵循某个规律,根据最优子结构。可以从底层推出递归方程从而完成动态规划算法。每一次把最优的子问题的解记录下来,不断选择最优的解,最后得出原问题的最优解。
2、分别列出编程题1、2的递归方程
(1)单调递增最长子序列
当i=0,longest [i]=1;
当i>0,longest [i] =longest [ j ] +1; (j>1&&J < i &&a【i】>a【j】&& longest 【j】+ 1 > longest 【i】)
(2)租船
当i=1,b [i]=0;
当i >=2. b【i】 =min( b【j】+a【j】【i】) (j > 1&& J < i-1)每一个J都会产生一个b【i】,每一次与辅助变量min对比,把较小值存入min中,最后再把min值赋值给b【i】;
3、说明结对编程情况
动态规划算法解题最重要还是要把递归方程想出来,在两个人思维的碰撞下,对一些小细节的改正后,就把思路理清楚了。

浙公网安备 33010602011771号