DP,dp[i] = max(dp[i - 2] + nums[i], dp[i - 1])
class Solution {
public:
int rob(vector<int>& nums) {
const int len = nums.size();
if (len == 0) return 0;
if (len == 1) return nums[0];
if (len == 2) return max(nums[0], nums[1]);
vector<int> dp(len + 1, 0);
dp[0] = nums[0];
dp[1] = max(nums[1], nums[0]);
for (int i = 2; i < len; ++i)
{
dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);
}
return dp[len - 1];
}
};
本文介绍了一种使用动态规划解决房屋打劫问题的方法。通过定义状态转移方程dp[i]=max(dp[i-2]+nums[i], dp[i-1])来求解在不连续打劫相邻房屋的情况下能获得的最大金额。
822

被折叠的 条评论
为什么被折叠?



