代码随想录算法训练营第三十九天-动态规划-198. 打家劫舍

  • 动规五部曲
    • dp[i]表示在下标为i的房间偷或不偷与前面所偷之和所能获得的最大价值
    • 递推公式:dp[i] = std::max(dp[i - 2] + nums[i], dp[i - 1])
    • 初始化:要给dp[0]dp[1]来给定初始值,因为递推公式有-1与-2。dp[0] = nums[0], dp[1] = std::max(nums[0], nums[1]);
      • 其它下标值,初始成任意值都可以,因为其值是由前面元素推导出来的
    • 遍历顺序:从2开始到最后一个房间的下标
    • 打印
cpp 复制代码
class Solution {
public:
    int rob(vector<int>& nums) {
        int dp[nums.size()];
        memset(dp, 0, sizeof(dp));
        if (nums.size() == 1) return nums.at(0);
        dp[0] = nums.at(0);
        dp[1] = std::max(dp[0], nums.at(1));
        for (int i = 2; i < nums.size(); i++) {
            dp[i] = std::max(dp[i - 1], dp[i - 2] + nums.at(i));
        }
        return dp[nums.size() - 1];
    }
};
相关推荐
q***252111 小时前
SpringMVC 请求参数接收
前端·javascript·算法
Dream it possible!11 小时前
LeetCode 面试经典 150_图_克隆图(90_133_C++_中等)(深度优先:DFS)
c++·leetcode·面试·
数模加油站11 小时前
25认证杯C题成品论文第一弹【冲奖硬核+无盲点解析】
算法·数学建模·认证杯·25认证杯
MobotStone11 小时前
数字沟通之道
人工智能·算法
点云SLAM12 小时前
Boost库中Math 模块的插值(interpolation使用和示例
算法·插值·boost库·b-spline·akima 样条·单调三次样条·barycentric 插值
鸭子程序员12 小时前
c++ 算法
开发语言·c++·算法
Ghost-Face12 小时前
《逆袭导论》————初中生的宝书
算法
不会c嘎嘎12 小时前
算法百练,直击OFFER -- day5
c++·算法
序属秋秋秋12 小时前
《Linux系统编程之进程环境》【环境变量】
linux·运维·服务器·c语言·c++·操作系统·系统编程
Aileen_0v012 小时前
【Gemini3.0的国内use教程】
android·人工智能·算法·开源·mariadb