算法第三章作业

一、动态规划的理解

  以我目前对动态规划的理解,是将一个原问题逐步问题可以划分为规模更小的子问题,并且原问题的最优解中包含了子问题的最优解,实质包含了分治法的思想,每一个子问题解决完返回给上一个子问题,依次求解出子问题的解从而解决原问题,将相当于将一个问题分成若干部分,环环相扣,由下至上解出答案。由子问题的最优解,慢慢解出原问题的最优解。

 

二、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} ;

 

三、结对编程

  和队友一起想问题,感觉非常好,比自己一个人会有更多的思路和想法,相比错误的想法也能更好的提出解决,我们每周一、周三都会利用饭前一小会时间讨论一下一下编程问题,促进友谊也能互相学习,期待下一次的合作。

  

posted @ 2019-11-03 19:57  严德怀  阅读(76)  评论(0编辑  收藏  举报