【LeetCode热题100】【动态规划】打家劫舍

题目链接:198. 打家劫舍 - 力扣(LeetCode)

如果没有房子,那就是0,如果有一间房子,那么就是这间房子,如果有两间,那么就挑一间打劫

如果有多间,对于第i间来说,让dp[i]是打劫的最大金额,如果要打劫第i间,那么第i-1间就不能打劫,dp[i]=nums[i-1]+dp[i-2],如果不打劫第i间,那么dp[i]=dp[i-1],取这两个的最大值

注意nums下标从0开始

复制代码
class Solution {
public:
    int rob(vector<int> &nums) {
        vector<int> dp(nums.size() + 1);
        dp[1] = nums[0];
        for (int i = 2; i <= nums.size(); ++i)
            dp[i] = max(dp[i - 1], nums[i - 1] + dp[i - 2]);
        return dp[nums.size()];
    }
};
相关推荐
shenghaide_jiahu13 分钟前
字符串匹配和回文串类题目
学习·算法·动态规划
有意义41 分钟前
为什么说数组是 JavaScript 开发者必须精通的数据结构?
前端·数据结构·算法
努力努力再努力wz41 分钟前
【Linux进阶系列】:线程(下)
linux·运维·服务器·c语言·数据结构·c++·算法
rit84324991 小时前
瑞利信道下PSK水声通信系统均衡技术
算法
ValhallaCoder1 小时前
Day33-动态规划
数据结构·python·算法·动态规划
不穿格子的程序员1 小时前
从零开始刷算法-二分-搜索插入位置
算法·二分查找
zhugby2 小时前
受限长度路径搜索算法
经验分享·算法·启发式算法·哈密顿问题·路径搜索算法
芋头莎莎2 小时前
STM32利用AES加密数据、解密数据
数据结构·stm32·算法
caron42 小时前
c++ -- 循环依赖解决方案
java·c++·算法
Kt&Rs2 小时前
11.11 LeetCode 题目汇总与解题思路
算法·leetcode·哈希算法