-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path213.cpp
28 lines (24 loc) · 799 Bytes
/
213.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Solution {
public:
int solve(vector<int>& nums, vector<vector<int>> & dp, int idx, int n, bool pick){
if(idx >= n){
return 0;
}
if(idx == n - 1){
if(pick){
return 0;
}
return nums[idx];
}
if(dp[idx][pick] != -1){
return dp[idx][pick];
}
return dp[idx][pick] = max(nums[idx] + solve(nums, dp, idx + 2, n, pick),
solve(nums, dp, idx + 1, n, pick));
}
int rob(vector<int>& nums) {
vector<vector<int>> dp(nums.size(), vector<int>(2, -1));
return max((nums[0] + solve(nums, dp, 2, nums.size(), true)),
solve(nums, dp, 1, nums.size(), false));
}
};