LeetCode 198. House Robber C++

本文介绍了一个经典动态规划问题——House Robber(打家劫舍)。问题要求在一个不能连续抢劫相邻房屋的限制下,计算出最大的抢劫金额。通过简洁易懂的例子和代码实现,展示了如何使用动态规划解决这一问题。

198. House Robber

You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security system connected and it will automatically contact the police if two adjacent houses were broken into on the same night.

Given a list of non-negative integers representing the amount of money of each house, determine the maximum amount of money you can rob tonight without alerting the police.

Example 1:

Input: [1,2,3,1]
Output: 4
Explanation: Rob house 1 (money = 1) and then rob house 3 (money = 3).
             Total amount you can rob = 1 + 3 = 4.

Example 2:

Input: [2,7,9,3,1]
Output: 12
Explanation: Rob house 1 (money = 2), rob house 3 (money = 9) and rob house 5 (money = 1).
             Total amount you can rob = 2 + 9 + 1 = 12.

Approach

  1. 题目大意就是一个小偷要去民宅偷东西,但是不能偷相邻的。动态规划类专题,这是一道很经典的动态规划,我们来用简洁的故事一下描述一下动态规划的过程:首先确保民宅n>=3栋,小偷在第3栋房子停了下,他需要决定该偷第二栋房子还是偷两栋房子第一栋和这栋房子,这时就要比较他们价值,哪个大偷哪个,然后小偷继续走来到了第四栋房子,它该需要决定该偷第一栋房子和这栋房子,还是偷第三栋刚偷过的房子,还是偷第二栋房子和这栋房子呢,也是一样比较价值,所以小偷每走一栋就这样抉择,最后它能偷到最多东西,可能会有疑惑,为什么到第四栋开始要想前三栋的主意,因为有效相邻距离最大就是两栋,可以好好仔细想想,为什么不是三栋或者一栋,或者更多,或许故事讲的不大好,可以与代码共服会更好。

Code

class Solution {
public:
    int rob(vector<int>& nums) {
        int n = nums.size();
        if (n == 0)return 0;
        if (n == 1)return nums[0];
        if (n == 2)return max(nums[0], nums[1]);
        vector<int>dp(n, 0);
        for (int i = 2; i < n; i++) {
            if (i == 2)
                nums[i] = max(nums[i - 2] + nums[i], nums[i - 1]);
            else 
                nums[i] = max(max(nums[i-3]+nums[i],nums[i - 2] + nums[i]), nums[i - 1]);
        }
        return nums[n - 1];
    }
};
内容概要:本文系统研究了基于豪猪优化算法(CPO)的多无人机协同集群在三维空间中的避障路径规划问题,聚焦于实现以最低成本为目标的航迹优化,综合考虑路径长度、飞行高度、威胁规避及转弯角度等多个关键因素。通过构建精细化的三维环境模型与多无人机协同机制,采用Matlab平台实现CPO算法的仿真与验证,充分展示了该算法在复杂动态障碍环境下的高效搜索能力与全局优化性能。研究不仅涵盖了路径规划的数学建模与目标函数设计,还深入探讨了算法的收敛特性与鲁棒性,为智能群体系统在实际场景中的应用提供了理论依据与技术支撑。; 适合人群:具备一定编程基础和优化算法背景,从事无人机系统控制、智能路径规划、群体协同、人工智能与自动化等相关领域的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①应用于多无人机协同执行侦察、灾害监测、应急救援、区域巡检等复杂任务中的自主路径规划;②为智能优化算法在三维动态环境下的路径决策问题提供可复现的技术范例;③支持研究人员对CPO算法与其他主流群智能算法(如PSO、GWO、WOA等)进行性能对比与改进研究,推动路径规划技术的发展。; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点理解目标函数的多维度建模方式与CPO算法的迭代优化流程,可通过调整环境参数与约束条件进行仿真实验,对比不同算法在相同场景下的路径质量与收敛速度,从而深入掌握其优势与适用边界。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值