算法第3章作业

一、对动态规划的理解

1.基本思想:将待求解问题分成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。但与分治法不同的是,适用于用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。所以不管该子问题以后是否被用到,只要他被计算过,就将其结果填入表中。

2.适用问题:解最优化问题。

3.步骤设计:(1)找出最优解的性质,并刻画其结构特征。

      (2)递归地定义最优值。

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

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

4.基本要素:(1)最优子结构性质:问题的最优解包含了其子问题的最优解。

      (2)重叠子问题性质:每次产生的子问题并不总是新问题,有些子问题被反复计算多次。通常,不同的子问题个数虽问题的大小呈多项式增长。

5.备忘录法:动态规划的变形。动态规划法的递归方式是自底而上,备忘录法的递归方式是自顶而下。

二、编程题的递归方程

编程题1:

if(nums[i]>nums[j]) dp[i]=max(dp[i],dp[j]+1);   [j<i]

编程题2:

price[i][j]=min(price[i][j],price[i][k]+rent[k][j]);   [i<=k<=j]

三、结对编程情况

针对课后的作业和上机课中的实践,我们都是先采取独立思考,遇到问题再进行讨论,或是双方都完成后讲解各自的解题思路,讨论优化方法。最近几次作业中,双方思路都比较相似。

posted @ 2018-11-12 20:16  cc-wanna  阅读(109)  评论(0编辑  收藏  举报