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()];
    }
};
相关推荐
代码不停14 小时前
BFS解决floodfill算法题目练习
算法·宽度优先
上弦月-编程14 小时前
C语言指针从入门到实战
java·jvm·算法
WL_Aurora14 小时前
Python 算法基础篇之树和二叉树
python·算法
txzrxz14 小时前
关于前缀和
算法·动态规划·图论
杨连江15 小时前
载流子矩阵限域束缚实现常温常压超导的理论与结构设计
算法
逻辑驱动的ken15 小时前
Java高频面试考点场景题20
java·开发语言·深度学习·面试·职场和发展
做cv的小昊15 小时前
【TJU】研究生应用统计学课程笔记(6)——第二章 参数估计(2.4 区间估计)
人工智能·笔记·线性代数·算法·机器学习·数学建模·概率论
普贤莲花15 小时前
【2026年第18周---写于20260501】---舍得
程序人生·算法·leetcode
2zcode15 小时前
基于深度学习的口腔疾病图像识别系统(UI界面+改进算法+数据集+训练代码)
人工智能·深度学习·算法
Sarvartha15 小时前
N 个字符串最长公共子序列(LCS)求解问题
数据结构·算法