动态规划
如3 1 1 3
dp[i]=max(dp[i-2]+dp[i],dp[i-3]+dp[i])
class Solution {
public:
int rob(vector<int>& nums) {
int n=nums.size();
if(n==1)return nums[0];
int out=nums[0]>nums[1]? nums[0]:nums[1];
if(n==2)return out;
for(int i=2;i<n;i++){
if(i-3>-1){
nums[i]+=(nums[i-3]>nums[i-2]?nums[i-3]:nums[i-2]);
out=max(out,nums[i]);
}else{
nums[i]+=nums[i-2];
out=max(out,nums[i]);
}
}
return out;
}
};