class Solution { public: int rob(vector<int>& nums) { int last,next2Last,ans; if(nums.empty()){ return 0; } if(nums.size()==1){ return nums[0]; } next2Last=nums[0]; last=max(nums[0],nums[1]); ans=last; //int N=nums.size()-2; for(int i=2;i<nums.size();i++){ ans=max(next2Last+nums[i],last); next2Last=last; last=ans; } return ans; } };
dp[i+1] 只能是二者之一
{
- 如果算上当前数,即nums[i+1],ans = dp[i-1] + nums[i+1]
- 如果不算,dp[i+1] = dp[i]
}