算法第三章作业

1. 任选作业题”单调递增最长子序列“、”挖地雷“、”编辑距离问题“中的一题分析。

  单调递增最长子序列

  设计一个O(n2)时间的算法,找出由n个数组成的序列的最长单调递增子序列。

1.1 根据最优子结构性质,列出递归方程式,

  m[i] = max{ m[j]+1 } 其中1<=j<i且a[i]>a[j],

  m[i] 表示以第i个数为结尾的最大单调递增子序列,a[i] 表示第i个数字。

1.2 给出填表法中表的维度、填表范围和填表顺序。

  表的维度:一维。

  填表范围:即 i 的取值范围是 0 到 n。

  填表顺序:由于m[i] 取决于 m[j] 的值, i 与 j 的关系为 1<=j<i,所以应该是从左往右填表。

1.3 分析该算法的时间和空间复杂度

  时间复杂度:i 的取值是从n到1,而 j 的取值是从 (i-1) 到0,因此时间复杂度为O(n²) 。

  空间复杂度:由于用到的是一维数组,因此空间复杂度为O(n²)。

2. 你对动态规划算法的理解

  动态规划,其中“拆分子问题,分析最优子结构,列出递归方程式”是最关键的。接下来根据递归方程式就可以分析出填表法中表的维度、填表范围和填表顺序等。另外,表的边界也需要特别考虑,边界可能要附上初始值。

3. 说明结对编程情况

  互帮互助。

posted @ 2020-11-01 11:54  x-ovo  阅读(71)  评论(0编辑  收藏  举报