题解 | #打家劫舍(一)#

打家劫舍(一)

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()];
    }
};
全部评论

相关推荐

3 1 评论
分享
牛客网
牛客企业服务