第三章动态规划小结

1. 你对动态规划算法的理解(2分)

我对动态规划的理解是:

  当前问题能根据之前的求解过的问题进行求解,或者是,一个问题的解依赖于若干个以前的求解过的子问题。

  与分治的区别是,分治将问题分成若干子问题进行处理后合并,问题与问题间没有像动态规划那样有很强的依赖关系,分治法更多的是独立求解再合并的思想;而动态规划的基本思想是填表,分治法将问题划分成很多子问题,有些子问题会存在被计算多次的情况,在动态规划中,将这些子问题都进行了记录,需要这些子问题的时候再进行查找,这样避免了子问题被重复计算的问题。

  解动态规划问题的核心是找出递归方程,递归方程体现的是之前的决策如何影响到当前决策、当前决策如何取决于之前决策,这个过程依次进行直到问题完全求解。

2. 分别列出编程题1、2的递归方程(2分)(我不知道是不是这两题)

 (1)单调递增最长子序列:

  d[i]表示以i下标结尾的数字的最长单调递增子序列的个数,默认值全设为1

  a[i]表示数列

  d[i] = max(1<= l < i){ d[l] + 1 | a[i] > a[l]} 

(2)租用游艇问题:

  d[i]表示到从1到i站所需的最少租金,初始化:d[1] = 0, d[2] = a[1][2]

  a[i][j]表示直接从i到j所花费的租金

  d[i] = min(1 <= l < i){ d[l] + a[l][i] }

3. 说明结对编程情况(1分)

  何俊毅大佬太强了,全程带飞,写题如同割韭菜。我呢,相形见绌,黯然失色,只好发奋图强,望之独勉。

猜你喜欢

转载自www.cnblogs.com/likeghee/p/11744111.html
今日推荐