算法第三章作业-单调递增最长子序列
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]就是答案。