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()];
    }
};
相关推荐
森焱森2 小时前
水下航行器外形分类详解
c语言·单片机·算法·架构·无人机
QuantumStack4 小时前
【C++ 真题】P1104 生日
开发语言·c++·算法
写个博客5 小时前
暑假算法日记第一天
算法
绿皮的猪猪侠5 小时前
算法笔记上机训练实战指南刷题
笔记·算法·pta·上机·浙大
hie988945 小时前
MATLAB锂离子电池伪二维(P2D)模型实现
人工智能·算法·matlab
杰克尼5 小时前
BM5 合并k个已排序的链表
数据结构·算法·链表
.30-06Springfield6 小时前
决策树(Decision tree)算法详解(ID3、C4.5、CART)
人工智能·python·算法·决策树·机器学习
我不是哆啦A梦6 小时前
破解风电运维“百模大战”困局,机械版ChatGPT诞生?
运维·人工智能·python·算法·chatgpt
xiaolang_8616_wjl6 小时前
c++文字游戏_闯关打怪
开发语言·数据结构·c++·算法·c++20
small_wh1te_coder6 小时前
硬件嵌入式学习路线大总结(一):C语言与linux。内功心法——从入门到精通,彻底打通你的任督二脉!
linux·c语言·汇编·嵌入式硬件·算法·c