198.House Robber
Example 1:
Input: [1,2,3,1]
Output: 4
Explanation: Rob house 1 (money = 1) and then rob house 3 (money = 3).
Total amount you can rob = 1 + 3 = 4.
Example 2:
Input: [2,7,9,3,1]
Output: 12
Explanation: Rob house 1 (money = 2), rob house 3 (money = 9) and rob house 5 (money = 1).
Total amount you can rob = 2 + 9 + 1 = 12.class Solution {
int rob(vector<int>& nums, int start) {
if(nums.empty()) return 0;
switch(nums.size() - start)
{
case 1: return nums[start];
case 2: return max(nums[start],nums[start+1]);
case 3: return max(nums[start]+nums[start+2],nums[start+1]);
case 4: return max(max(nums[start]+nums[start+2], nums[start+1]+nums[start+3]), nums[start]+nums[start+3]);
default: break;
}
return max(nums[start]+rob(nums,start+2), nums[start+1]+rob(nums, start+3));
}
public:
int rob(vector<int>& nums) {
return rob(nums,0);
}
};Last updated