leetcode_198_打家劫舍


思路 :首先定义一个数组对于dpi读作1->i能获取的最大利益,第i个房屋只有"偷"和不"偷"两种情况,分别进行讨论

"偷": 既然"偷"了 i那就肯定不能偷i-1 了,但是为了使"偷"的尽可能多除了必须不能"偷"的全要"偷",

所以得到第一个部分dpi=numsi+dpi-2;

不"偷" : 这就很明显了不"偷"那就是前i-1个的情况嘛dpi=dpi-1;

综上实现公式应为dpi=max(numsi+dpi-2,dpi-1);

实现代码如下

cpp 复制代码
int rob(vector<int>& nums) {
        int dp[105], size = nums.size();
        dp[0] = nums[0];
        if (size > 1)
            dp[1] = max(nums[0], nums[1]);
        for (int i = 2; i < size; i++) {
            dp[i] = max(nums[i] + dp[i - 2], dp[i - 1]);
        }
        return dp[size - 1];
    }
相关推荐
@三十一Y8 分钟前
C++:AVL树实现
c++
ShineWinsu1 小时前
对于Linux:传输层协议UDP原理的解析
linux·c++·面试·udp·协议·传输层·计算机系统
LingzhiPi1 小时前
零知派ESP32--AS5600磁吸旋钮音量控制器
c++·单片机·嵌入式硬件
小保CPP1 小时前
OpenCV C++车型识别1-图像预处理
c++·人工智能·opencv·计算机视觉
库克克2 小时前
【C++】C++11 包装器function 与 绑定器 bind
开发语言·c++
小小龙学IT2 小时前
C++ Placement New 与显式析构:手动对象生命周期管理的艺术
c++·windows·mfc
Gauss松鼠会2 小时前
【GaussDB】GaussDB锁阻塞源头查询
java·开发语言·前端·数据库·算法·gaussdb·经验总结
oier_Asad.Chen2 小时前
【洛谷题解/AcWing题解】洛谷P4011 孤岛营救问题/AcWing1131拯救大兵瑞恩
数据结构·笔记·学习·算法·动态规划·图论·宽度优先
小保CPP2 小时前
OpenCV C++车型识别2-形状匹配
c++·人工智能·opencv·计算机视觉
逻辑君2 小时前
基于 A2C 算法的双足机器人行走控制
人工智能·深度学习·算法·机器学习·机器人