dp[i]表示经过第i个房子的最大金额,经过一个房子有两种选择,偷或者不偷。
class Solution {
public:
int rob(vector<int>& nums) {
int n = nums.size();
if (n == 1) return nums[0];
vector<int> dp(n);
dp[0] = nums[0];
dp[1] = max(nums[0], nums[1]);
for (int i = 2; i < n; i++)
{
dp[i] = max(dp[i-2] + nums[i], dp[i-1]);
}
return dp[n-1];
}
};