记录学习的第十九天

  现在这篇是记录一下4.1的学习。今天还没开始。

这篇是关于简单的动态规划的题目,思路比较清晰类似。

 

  在这里先说一下有关动态规划的四个步骤:

1.确定子问题

2.确定dp数组的递推关系(dp数组也叫子问题数组)

3.确定求解的计算顺序

4.空间优化(初学者可以不掌握,本篇中没有涉及)

 

  接下来上第一道题,由打家劫舍引入门。

   那么,首先按步骤来,第一步:确定子问题。

这道题的大问题是一夜之间偷n间房子的最大金额。

   而现在要明确子问题,子问题是什么?我们要求的问题是可以通过子问题来得到的。

所以这道题中我们可以把范围缩小,先求k个房子的最大金额。而当k=n时就是题目所求内容了。

   现在开始求解第二步:确定子问题的递推关系。

在本题中,还是比较容易找到的。dp[k]就是dp[k-1](不打劫第k间房子)与dp[k-2]+nums[k-1](打劫第k间房子)的最大值了。

  就到了第三步:确定dp数组的计算顺序。

还是能够清晰知道是从左往右的,先计算打劫较小的房子,一直到n个房子为止。

  至此,就可以写出代码了。

 

  接下来是一道打家劫舍的拓展题。

   就是由一排过来变成了房子是围着的而已。那么可以拆开来求解(打了第一间就不打最后一间或者不打第一间),就变成单排求解,和上面一道题一样了。

 

  最后还有一道类似的题目,学会上面两道题目之后,这道题就差不多了。

   不过这里是从问题0开始的,和上面的顺序是相反的,知道这个思路之后就很好做了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值