leetcode 198. 打家劫舍-爱代码爱编程
dp[i] =max( dp[i-2] + nums[i] , dp[i-3] + nums[i])
class Solution {
public:
int rob(vector<int>& nums) {
// dp[i] = dp[i-2] + nums[i] , dp[i-3] + nums[i]
vector<int>dp(nums.size(), 0);
int ans = 0;
for(int i = 0; i < nums.size(); i++) {
if(i == 0) {
dp[i] = nums[i];
ans = max(ans, dp[i]);
continue;
}
if(i == 1) {
dp[i] = max(nums[0], nums[1]);
}
if(i >= 2) {
dp[i] = max(dp[i], dp[i-2] + nums[i]);
}
if(i >= 3) {
dp[i] = max(dp[i], dp[i-3] + nums[i]);
}
ans = max(ans, dp[i]);
}
return ans;
}
};