Source: House Robber - LeetCode
状态转移方程
f ( x ) = m a x { f ( x − 1 ) , f ( x − 2 ) + v } f(x)=max\{ f(x-1),f(x-2)+v \} f(x)=max{f(x−1),f(x−2)+v}
题解
class Solution {
public:
int rob(vector<int>& nums) {
int n=nums.size();
if(n==1)return nums[0];
vector<int>dp(n+1);
dp[1]=nums[0];
for (int i = 2; i < n+1; ++i) {
dp[i]= max(dp[i-1],dp[i-2]+ nums[i-1]);
}
return dp.back();
}
};