第三章作业
- 1. 你对动态规划算法的理解(2分)
- 2. 分别列出编程题1、2的递归方程(2分)
- 3. 说明结对编程情况(1分)
- 1. 动态规划算法动态规划是针对一类求最优解的问题的算法,其核心是将一个问题分解成为若干个子问题,部分类似于分治的思想,通过求每一次的最优决策,来得到一个最优解。在这里最重要的就是子问题的思想。求解的方式有两种:①自顶向下的备忘录法 ②自底向上。
2.第一题用到了最长公共子序列的方法:
第二题:
定义f[i][j]为站点i到站点j的最少租金:
f[i][j] = min { f[i][k] + f[k][j] }
其中 i<k<j, 0<=i,j<=n-1
则最少租金为 f[0][n-1]
3.编程期间,没有遇到什么很大的问题,就是解题第一步需要想出递归方程,然后代码实现就简单很多了,不过第二题游艇问题,要得到最低开销,就得从最底层开始,逐渐向上计算每两个站之间最低开销,并记录在预先设定的数组中,两个站可能是相邻的,也可能是不相邻的。