版权声明:原创勿转 https://cloud.tencent.com/developer/article/1412907
思路
dp解法:
状态方程:
dpi = max(dpi-2 numsi,dpi-1)
到当前的house时,有两种情况:
1.抢了前面一个,那么当前这个不能抢
2.抢了前面的前面的那个,那么当前这个可以抢
所以当前的收益,等于上面两种情况的最大值
code
代码语言:javascript复制func rob(nums []int) int {
if len(nums) == 0 {
return 0
}
if len(nums) == 1 {
return nums[0]
}
dp := make([]int, len(nums))
dp[0] = nums[0]
dp[1] = mymax(nums[0], nums[1])
for i := 2; i < len(nums); i {
dp[i] = mymax(dp[i-2] nums[i], dp[i-1])
}
return dp[len(nums)-1]
}
func mymax(x, y int) int {
if x > y {
return x
}
return y
}