我一开始的思路也是dp,但是转移方程想错了,这个题目转移方程应该是dp[i] = max(dp[i-2]+nums[i],dp[i-1])
class Solution {
public:
int rob(vector<int>& nums) {
int len = nums.size();
vector<int> dp(len);
int ans = 0;
if(len>=1)
dp[0] = nums[0],ans=max(ans,dp[0]);
if(len>=2)
dp[1] = max(nums[0],nums[1]),ans=max(ans,dp[1]);
for(int i=2;i<len;i++){
dp[i] = max(dp[i-2]+nums[i],dp[i-1]);
ans = max(ans,dp[i]);
}
return ans;
}
};