标签(空格分隔): leetcode dp


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.
题意:
1. 每间房屋藏有一定的钱
2. 阻止你们抢劫每个人的唯一约束是邻近的房屋有安全系统连接,
3. 如果两个相邻的房屋在同一天晚上被打破,它将自动联系警察。
4. 给出一个代表每个房子的非负整数的钱的列表,确定你今天晚上可以抢救的最大金额,而不用警报。

思路;
状态转移方程:
dp[0] = num[0] (当i=0时)
dp[1] = max(num[0], num[1]) (当i=1时)
dp[i] = max(num[i] + dp[i - 2], dp[i - 1]) (当i !=0 and i != 1时)

当数只有0,1,2这大小的时候,直接计算,然后如果大于2个数,我们就可以分解成三部分,每次计算最左边最大值和最右边的数的和与中间的最大值比较;

int rob(vector<int>& nums) {if (nums.empty()){return 0;}int len = nums.size();if (len == 1) return nums[0];if (len == 2) return nums[0]>nums[1]?nums[0]:nums[1];int i = 2;int ans = 0;int left = nums[0], mid = max(nums[0],nums[1]);for (i; i < len;++i){ans = max(nums[i] +left, mid);left = mid;mid = ans;}return ans;
}

别人的做法:

class Solution {
public:int rob(vector<int>& nums) {int numsSize = nums.size();int a = 0, b = 0;for(int i=0; i<numsSize; i++){if(i%2==0)a = max(a+nums[i],b);elseb = max(b+nums[i],a);}return max(a,b);}
};

设置奇偶校验,交替计算前n项的最大值;

198. House Robber(入室强盗)相关推荐

  1. LeetCode 198 House Robber(强盗盗窃最大值)(动态规划)(*)

    翻译 你是一个专业强盗,并计划沿街去盗窃每一个住户.每个房子都有一定量的现金,阻止你盗窃的唯一阻碍是相邻的两个房子之间有安全系统.一旦这两个房子同时被盗窃,系统就会自动联系警察.给定一系列非负整数代表 ...

  2. 198. House Robber(动态规划--房屋强盗)

    题目 You are a professional robber planning to rob houses along a street. Each house has a certain amo ...

  3. [dp]leetcode 198. House Robber

    输入:一个数组nums,每一个元素nums[i]表示第i个房间的价值. 输出:一个抢劫犯能抢到又不会被警察发现的最大价值. 规则:如果抢劫犯抢了相邻房间,那么报警装置就会触发,警察会得到通知. 分析: ...

  4. leetcode python3 简单题198. House Robber

    1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第一百九十八题 (1)题目 英文: You are a professional r ...

  5. 198. House Robber 的递归与动态规划实现方法(Python)

    目录 背景 实现方法 Step 1. 确定递归关系 Step 2. 递归方法实现 (top-down) Step 3. 递归方法 + 过程存储 实现 (top-down) Step 4. 迭代方法 + ...

  6. 198 House Robber

    题目链接:https://leetcode.com/problems/house-robber/ 题目: You are a professional robber planning to rob h ...

  7. leetcode解题报告:198 House Robber

    问题描述: 一个小偷去一个街区偷东西,求偷得价值最大,唯一限制就是不能偷连续的两家,因为这样会触发警报. 建模: 给定一个列表,里面存着每家可以偷的价值,输出最大偷到的价值. 思路:动态规划 如果输入 ...

  8. LeetCode 198 House Robber Python

    题意:一组直线排列的房屋,一个小偷要进屋偷钱,如果小偷偷了相邻两座房屋就会触发报警系统,问在不触发报警系统的前提下小偷最多可以偷到多少钱. 难度:esay 思路:这是一道标准的动态规划问题,创建一个l ...

  9. 198. House Robber

    Title 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给 ...

最新文章

  1. 转:去掉Flex4生成的SWF加载时的进度条
  2. 动态创建DataTable[转]
  3. 几大最短路径算法比较
  4. 10--MySQL数据查询应用(实战)(一)
  5. php 连接oracle插入多张图片的方法
  6. 20150901-Linux磁盘管理及文件系统管理
  7. utilities——比较与排序规则(C++)
  8. 在线计算CAN波特率参数
  9. Matlab系列之小波分析基础
  10. Post 页面数据,使用boundary来格式化
  11. layui实际项目使用过程中遇到的兼容性问题
  12. PPT太大怎么进行压缩
  13. 算法和程序有何异同?
  14. 由于应用universal link 校验不通过 ios应用升级SDK 更换Universal Links校验
  15. 笔记11-继承修饰符
  16. python如何期货交易_基于Python的股指期货交易系统
  17. 微信小程序之数据传递
  18. bluez——mgmt分析
  19. 用uniapp实现微信小程序的电子签名效果
  20. 安卓四大组件(小白篇)

热门文章

  1. 吴恩达深度学习课程第五课笔记——序列模型
  2. DBISAM故障一例
  3. 使用python爬取英雄联盟的图片
  4. Spring-Mail
  5. 计算机蓝屏 excel变乱码,使用excel过程中蓝屏为什么?
  6. 禾赛科技 2022 面试题
  7. 如何知道linux内核版本,如何查看linux内核版本
  8. iOS 15查找我的有什么作用?
  9. 怎样使用“查找我的iPhone”查找丢失的AirPods
  10. 周报——网络教学资源平台设计之课程管理系统序列图