算法第三章作业-单调递增最长子序列

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

dp[i]表示以a[i]为结尾的最长子序列,因为必包含自己,所以均初始化为1。

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

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

表的维度是1,填表范围为1-n,填表顺序为从左往右。

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

因为算法里有两重循环,所以时间复杂度为o(n²),空间复杂度为o(n)。

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

动态规划思想与分治法类似,都是将问题分解为多个子问题,通过求解子问题来得到最终答案,而动态规划的优势在于,动态规划防止了子问题的重复计算,每个问题只计算一次,自底向上地求出原问题的解。

3. 说明结对编程情况

结对编程的时候一直没有想到先把左边界和上边界初始化,所以就卡在了这里很久。之后查阅了资料才知道可以先初始化边界,然后再用二维dp[i][j]存放从(1,1)到(i,j)最低的费用。这样dp[n][m]就是答案。

posted @ 2020-10-29 20:49  周以  阅读(101)  评论(0编辑  收藏  举报