打家劫舍问题
✏️ 1、打家劫舍【链接】
int rob(vector<int>& nums) {
if(nums.empty())
return 0;
int len = nums.size();
int dp[len + 1];
dp[0] = 0;
dp[1] = nums[0];
for(int i = 1; i < len; ++i){
dp[i + 1] = max(dp[i - 1] + nums[i], dp[i]);
}
return dp[len];
}int rob(vector<int>& nums) {
if(nums.empty())
return 0;
int dp_0 = 0, dp_1 = nums[0];
for(int i = 1; i < nums.size(); ++i){
int tmp = dp_1;
dp_1 = max(dp_0 + nums[i], dp_1);
dp_0 = tmp;
}
return dp_1;
}✏️ 2、打家劫舍II【链接】
✏️ 3、打家劫舍III【链接】
树结构的动态规划拓展
最后更新于