题解 | #打家劫舍(一)#
打家劫舍(一)
https://www.nowcoder.com/practice/c5fbf7325fbd4c0ea3d0c3ea6bc6cc79
对于这题,
我们DP[i]数组的意思应该是打劫到第i家的最优解。
很明显,如果打劫一家人,由于题目限制,并不能打劫上一家人,
但却可以获得这一家的现金,得出:
如果不打劫当前这一家人,那我们就可以获得dp[i-1]的收益.
愣着干嘛,求最大值啊!
这不就出来了吗?
上代码!(c++)
class Solution { public: int rob(vector<int>& nums) { int dp[nums.size()+1]; for(int i=0;i<=nums.size();i++)dp[i]=0; dp[1]=nums[0]; for(int i=2;i<=nums.size();i++) dp[i]=max(dp[i-1],dp[i-2]+nums[i-1]); return dp[nums.size()]; } };