码迷,mamicode.com
首页 > 编程语言 > 详细

算法第三章总结

时间:2019-11-04 13:11:10      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:递归   目的   第三章   动态   结构   分解   自己的   结对编程   自底向上   

一、基本思想

  与分治法相似,基本思想,将求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。

  但是它们也有很大的不同之处,即适用于用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。 

二、设计步骤

  动态规划法适用于最优化问题,通常可按以下4个步骤设计:

  1)找出最优解的性质,并刻画其结构特征

  2)递归地定义最优解

  3)以自底向上的方式计算出最优值

  4)根据计算最优值时得到的信息,构造最优解

 三、问题特征

  • 最优子结构性质:当一个问题的最优解包含了其子问题的最优解时,这个问题具有最优子结构
  • 重叠子问题性质:在问题的求解过程中,很多子问题的解会被多次使用

四、编程题递归方程

1、单调递增最长子序列:m[i] = max{ m[k] + 1 | a[k] < a[i] } (1<= k < i)

            m[i] = 1 (k = 0)

2、租用游艇问题:m[i] = max {cost[i][j] + m[j]}, i+1 <= j <= n

五、结对编程情况

1、课堂上学习的时候老师讲的很清楚,解题的思想很容易被理解,题目的代码也能看明白,但是真正自己写代码的时候,就感觉这是啥呀,就算写出了递归方程,想好了怎么填表,但是代码的实现困难重重,在以后要注意增强自己的实践动手能力。

2、结对编程的时候自己也要敢于动手,要把partner当成帮手,但不能完全依赖partner,要注重独立编程的能力。

算法第三章总结

标签:递归   目的   第三章   动态   结构   分解   自己的   结对编程   自底向上   

原文地址:https://www.cnblogs.com/Timbal/p/11791477.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!