使用动态规划时,记录的是到当前房屋为止,偷到的最大金额
所以对于当前房屋会有两种情况
①不偷,那么,根据规则,则到当前房屋为止,最大金额等于上一间房屋的最大金额
②偷,那么,根据规则,则不可以偷上一间房屋,最大金额等于前一间房屋+当前房屋金额
class Solution:
def rob(self, nums):
if len(nums) > 1:
tmp={0:nums[0],1:max(nums[1],nums[0])}
if nums[0] > nums[1]:
index = 0
else:
index = 1
else:
tmp={0:nums[0]}
index=0
for index in range(2,len(nums)):
tmp[index]=max(tmp[index-2]+nums[index],tmp[index-1])
return tmp[index]