算法第三章作业
一、动态规划的理解
以我目前对动态规划的理解,是将一个原问题逐步问题可以划分为规模更小的子问题,并且原问题的最优解中包含了子问题的最优解,实质包含了分治法的思想,每一个子问题解决完返回给上一个子问题,依次求解出子问题的解从而解决原问题,将相当于将一个问题分成若干部分,环环相扣,由下至上解出答案。由子问题的最优解,慢慢解出原问题的最优解。
二、1.2题的递归方程
第一题:单调递增最长子序列 :
定义一个一维数组dp[i]来存放长度为i+1的递增子序列的长度,a[[i]为存放的n个数组。
dp[i] = max(dp[j]+1, dp[i]);(1<j<i,a[i] > a[j]);
第二题:租用游艇问题
定义m[i]为第1站到第i站的最优解最小租金。cost[i][k]为第i站到第k站的价格
m[i] = min { cost[i][k] + m[k] | i≤k≤n} ;
三、结对编程
和队友一起想问题,感觉非常好,比自己一个人会有更多的思路和想法,相比错误的想法也能更好的提出解决,我们每周一、周三都会利用饭前一小会时间讨论一下一下编程问题,促进友谊也能互相学习,期待下一次的合作。