leetcode 198. 打家劫舍

2023.8.19

打劫问题是经典的动态规划问题。先设一个dp数组,dp[i]的含义为:前 i 个房屋能盗取的最高金额。 每间房屋无非就是偷,或者不偷这两种情况,于是可以写出递推公式: ​​​​​​​ dp[i] = max(dp[i-2]+nums[i-1] , dp[i-1]);

由递推公式发现需要初始化dp[0]和dp[1],初始化完之后再对房屋进行遍历赋值即可。附上我的草稿图以供参考:

​​​​​​​

代码如下:

cpp 复制代码
class Solution {
public:
    int rob(vector<int>& nums) {
        vector<int> dp(nums.size()+1);
        dp[0] = 0;
        dp[1] = nums[0];
        for(int i=2; i<=nums.size(); i++)
        {
            dp[i] = max(dp[i-2]+nums[i-1] , dp[i-1]);
        }
        return dp[nums.size()];
    }
};
相关推荐
德先生&赛先生15 分钟前
LeetCode-542. 01 矩阵
算法·leetcode·矩阵
HAH-HAH20 分钟前
【洛谷】P2197【模板】Nim 游戏
算法·游戏
lichkingyang38 分钟前
最近遇到的几个JVM问题
java·jvm·算法
feifeigo1231 小时前
matlab中随机森林算法的实现
算法·随机森林·matlab
躲着人群2 小时前
次短路&&P2865 [USACO06NOV] Roadblocks G题解
c语言·数据结构·c++·算法·dijkstra·次短路
心动啊1213 小时前
支持向量机
算法·机器学习·支持向量机
小欣加油3 小时前
leetcode 1493 删掉一个元素以后全为1的最长子数组
c++·算法·leetcode
蓝风破云4 小时前
C++实现常见的排序算法
数据结构·c++·算法·排序算法·visual studio
艾醒5 小时前
大模型面试题剖析:Pre-Norm与Post-Norm的对比及当代大模型选择Pre-Norm的原因
算法
怀旧,5 小时前
【C++】 9. vector
java·c++·算法