leetcode-198. 打家劫舍

 

 

class Solution {
public:
    int rob(vector<int>& nums) {
        if(nums.size()==0)
            return 0;
        if(nums.size()==1)
            return nums[0];
        // dp[i]表示前i间房屋能偷窃到的最高总金额
        vector<int> dp(nums.size(), 0); 

        dp[0] = nums[0];
        dp[1] =max(nums[0],nums[1]);

        for(int i = 2; i < nums.size(); i++){
            dp[i] = max(dp[i-2]+nums[i],dp[i-1]);
            // 今天选择偷,偷前i间的金额为dp[i-2]+nums[i]
            // 今天选择不偷,偷前i间的金额为dp[i-1]
        }
        return dp[nums.size()-1];
    }
};

 

posted @ 2021-07-21 19:08  三一一一317  阅读(18)  评论(0)    收藏  举报