打家劫舍||
链接: 打家劫舍||
在做这个题之前,建议大家做一下这个链接: 按摩师
我的博客里也有这个题的讲解,名字是按摩师
题目描述
算法分析
编程代码
cpp
class Solution {
public:
int maxrob(vector<int>nums,int left,int right){
if(left > right) return 0;
//int n = nums.size();
vector<int>f(right+1);
auto g = f;
f[left] = nums[left];
for(int i = left+1;i<=right;++i)
{
f[i] = g[i-1] + nums[i];
g[i] = max(f[i-1],g[i-1]);
}
return max(f[right],g[right]);
}
int rob(vector<int>& nums) {
//int n = nums.size();
return max(nums[0] + maxrob(nums,2,nums.size()-2)
,maxrob(nums,1,nums.size()-1));
}
};