LeetCode 198. 打家劫舍

题目描述: 打家劫舍

        你是一个专业的强盗,计划抢劫沿街的房屋。每间房都藏有一定的现金,阻止你抢劫他们的唯一的制约因素就是相邻的房屋有保安系统连接,如果两间相邻的房屋在同一晚上被闯入它会自动联系警方

        给定一个代表每个房屋的金额的非负整数列表,确定你可以在没有提醒警方的情况下抢劫的最高金额。

解题思路:

        动态规划:状态方程:ans[i]表示从第0家偷到第i家时能获得的最高金额

ans[i] = max(ans[i-1], ans[i-2]+nums[i]);  

代码:

class Solution {
public:
    int rob(vector<int>& nums) {
        if(nums.size() == 0) return 0;
        if(nums.size() == 1) return nums[0];
        int ans[nums.size()];
        ans[0] = nums[0];
        ans[1] = max(ans[0], nums[1]);
        for(int i = 2 ; i < nums.size() ; i ++) {
            ans[i] = max(ans[i-1], ans[i-2]+nums[i]);    
        }
        return ans[nums.size()-1];
    }
};

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页