算法第三章作业

1. 你对动态规划算法的理解

动态规划算法适用于解最优化问题,可以算作分治法的优化和升级。在用分治法求解问题时,有些子问题被重复计算了许多次。如果能够保存已经解决的子问题的答案,在需要时再找出已求得的答案,这样可以避免大量的重复计算,从而得到多项式时间算法。为达到此目的,可以用一个表来记录所有已解决的子问题的答案。动态规划的基本思想就是,无论子问题以后是否被用到,只要它被计算过,就将其结果存入表中。运用动态规划法的最关键步骤就是写出递归表达式。

 

2. 分别列出编程题1、2的递归方程

编程题1的递归方程:m[i]=1 , n=1

                                  m[i]=max{ m[k+1] , m[i] } , (a[k]<a[i], 1<=k<i, n>1)

 

编程题2的递归方程:m[i]=min{ c[i][k]+m[k] }, (i<k<=n)  (从i站出发到目的地的最小费用)

                                 (c[i][j]表示从i站到j站的费用)

 

3. 说明结对编程情况

在结对编程过程中,彼此的交流能够更有效率完成题目,也促进了双方的进步,希望在以后实践讨论的过程中收获更多知识,不断成长。

posted @ 2019-11-03 11:49  .Daylight  阅读(107)  评论(0编辑  收藏  举报