3
int rob(vector<int> &nums) {9
vector<vector<vector<int>>> dp(n + 1, vector<vector<int>>(2, vector<int>(2, -1)));12
for (int i = 0; i < n; i++) {13
for (int j = 0; j < 2; j++) {14
for (int k = 0; k < 2; k++) {15
maxm = max(maxm, dp_fun(dp, i, j, k, nums));23
int dp_fun(vector<vector<vector<int>>> &dp, int ind, int num, int last, vector<int> &ar) {25
if (dp[ind][num][last] == -1) {28
dp[ind][num][last] = 0;31
dp[ind][num][last] = ar[ind];33
dp[ind][num][last] = 0;36
} else if (ind == n - 1) {38
dp[ind][num][last] = 0;41
dp[ind][num][last] = dp_fun(dp, ind - 1, 1, 0, ar);43
dp[ind][num][last] = ar[ind] + dp_fun(dp, ind - 1, 0, 1, ar);49
max(ar[ind] + dp_fun(dp, ind - 1, 0, last, ar), dp_fun(dp, ind - 1, 1, last, ar));51
dp[ind][num][last] = dp_fun(dp, ind - 1, 1, last, ar);55
return dp[ind][num][last];