《算法设计与分析》-- 第三章作业

一、对动态规划算法的理解

  动态规划算法与分治法类似,都是将求解问题分解成若干子问题,解决子问题,最后结合子问题得到原问题的解。但与分治法不同的是,这些分解的子问题往往不是互相独立的,其内部存在某种联系,所以可以将子问题的解记录在一个表上,最后通过读表的方式解决原问题。动态规划适用于解最优化问题。

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

  1.单调递增最长子序列:用一个数组a【】来存数列,用dp【i】来表示以i下标结尾的数的最长子序列,则 

  当(1 <= j < i且a【i】 > a【j】 )

  dp[i] = max(dp[i], dp[j] + 1)

 

  2.租用游艇问题:用一个二维数组a【】【】来存各出租站之间的租金,用dp【i】【j】表示第i站到第j站的最小费用,则

  当(2 <= i < j <= n)

  dp[1][j] = min(dp[1][j] ,dp[1][i] + dp[i][j] 

三、结对编程情况

  跟着队友,特别是基础好的队友学习编程,效率确实大大的提高了很多,而且很多小问题也在队友面前解决了。但是我们之间的实力悬殊过大,总会让我有点懈怠,让我觉得反正有他在,我随随便便做一些就ok,总是不求甚解。感觉自己没有硬实力,所以以后我要自己独立完成一些题目,尽量是自己解决,然后实在不会的地方在问自己的伙伴。这样既能提升自己又能少麻烦一下同伴,一石二鸟。respect.

猜你喜欢

转载自www.cnblogs.com/jyf2018/p/11785591.html
今日推荐