- 思路
典型动态规划问题,f(k) =max( f(k-1) , f(k-2)+n(k) ) - 错误
一开始没有考虑到k=1时也要在0和1里面选择
int rob(int* nums, int numsSize){
if(numsSize==0)
return 0;
if(numsSize==1)
return nums[0];
if(numsSize==2){
if(nums[0]>nums[1])
return nums[0];
else
return nums[1];
}
int sum[numsSize];
sum[0] = nums[0];
sum[1] = nums[1];
if(nums[0]>nums[1])
sum[1] = nums[0];
for(int i=2; i<numsSize; i++){
sum[i] = max(nums[i]+sum[i-2], sum[i-1]);
}
return sum[numsSize-1];
}