简单的经典DP题,类似 最大子序和
状态转移方程:
dp[i]=max{dp[i-1], A[i]+dp[i-2]}
代码:(vector)
class Solution {
public:
int max(int a,int b) {
return a>b?a:b;
}
int rob(vector<int>& nums) {
int size=nums.size();
vector<int> dp(size);
if(size==0) return 0;
else if(size==1) return nums[0];
else {
dp[0]=nums[0];
dp[1]=max(nums[0],nums[1]);
for(int i=2;i<size;i++){
dp[i]=max(dp[i-1], nums[i]+dp[i-2]);
}
}
int temp=dp[0];
for(int i=0;i<size;i++){
if(temp<dp[i]){
temp=dp[i];
}
}
return temp;
}
};