假设你是一个劫匪 抢劫一条街上的房子 每个房子里有一定数目的钱 但是如果抢劫相连的房子会触发报警 如何使抢劫收益最大化

public int Rob(int[] house){int rob=0;
int nonRob=0;
int maxMoney=0;
for(int i=0;i<house.length;i++){
rob=nonRob+house[i]; nonRob=maxMoney; maxMoney=Math.max(rob,nonRob);}
return maxMoney;
}
public static void main(String[] args) {
int i=(int)(Math.random()*10+1);int[]house=new int[i];
System.out.println("共有"+i+"所房屋");
for(int a=0;a<i;a++){house[a]=(int)(Math.random()*100+1); System.out.println("第一家"+house[a]);}
HouseRobber houserobber=new HouseRobber();
System.out.println("最大值"+houserobber.Rob(house)); }

思路:对于第n个房间我们所能有的选择是偷和不偷, 那么如果是做决定是偷 则上一步必须是不偷
那么 这一步的就是dp[N] = num[i -1 ] + dpNonTake[N -1]
假设dp[N] 表示的是有N个元素时候的最大值状态。
如果是不偷, 那么上一步就无所谓是不是已经偷过,所以就copy为 dp[N] = dp[N -1 ]即可,
所以总而言之为 dp[N] = Math.max(dpNontake[N-1 ] + num【i】, dp[N-1] );
一个 为Rob 一个为 nonRob 和 到当前的最大值。

HouseRobber相关推荐

  1. Leetcode每日一题:198.house-robber(打家劫舍)

    思路:明显的动态规划,用money[i]存放打劫至第i家时得到的最多的金额,那么money[i]=max(money[i-2]+nums[i] ,money[i-1]) 因为不能打劫邻居 或者说mon ...

  2. HouseRobber 打家劫舍

    这道题我在一年前写过,但是时间太长忘了...当时还刚学动态规划呢:经过两个小时左右的回忆.优化,我又想起来了,并且在原有基础上又扩展了一步. 首先从HouseRobber1开始,最原始的代码解决方案那 ...

  3. HouseRobber II

    // // Created by Administrator on 2021/7/27. //#ifndef C__TEST01_HOUSEROBBER2_HPP #define C__TEST01_ ...

  4. 动态规划走楼梯_动态规划问题为什么要画表格?

    ❝ 本文是我的 91 算法第一期的部分讲义内容.91 算法第一期已经接近尾声,二期的具体时间关注我的公众号即可,一旦开放,会第一时间在公众号<力扣加加>通知大家. ❞ 动态规划可以理解为是 ...

  5. 多维多重背包问题_满满干货!背包问题全总结(带c++源码)

    目录: 动态规划简介 0-1 背包问题 完全背包问题 多重背包问题 混合背包问题 二维(多维)费用背包问题 分组的背包问题 有依赖的背包问题 动态规划简介 在学习背包问题之前需要对动态规划有一定的了解 ...

  6. 互联网大厂算法面试题集合,看完我跪了!

    来源:https://github.com/azl397985856/leetcode 介绍 leetcode 题解,记录自己的 leetcode 解题之路. 本仓库目前分为五个部分: 第一个部分是 ...

  7. 动态规划原理介绍(附7个算例,有代码讲解)

    动态规划思想 动态规划(Dynamicprogramming)是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法. 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗 ...

  8. Leetcode 534打劫房屋II python

    描述 在上次打劫完一条街道之后,窃贼又发现了一个新的可以打劫的地方,但这次所有的房子围成了一个圈,这就意味着第一间房子和最后一间房子是挨着的.每个房子都存放着特定金额的钱.你面临的唯一约束条件是:相邻 ...

  9. LeetCode 392打劫房屋 python

    描述 假设你是一个专业的窃贼,准备沿着一条街打劫房屋.每个房子都存放着特定金额的钱.你面临的唯一约束条件是:相邻的房子装着相互联系的防盗系统,且 当相邻的两个房子同一天被打劫时,该系统会自动报警. 给 ...

最新文章

  1. [技术基础]计算机网络技术基础名词解释
  2. leetcode || 50、Pow(x, n)
  3. 7月24日 学习笔记
  4. DevExpress v18.1新版亮点——WinForms篇(四)
  5. hdu 1026 Ignatius and the Princess I(优先队列+bfs+记录路径)
  6. Python单元测试介绍及单元测试理解,单元测试的自动生成(对函数进行测试)
  7. iOS的主要框架介绍
  8. MySQL给查询结果添加一表表示行号或名次(1)
  9. saas和pass的区别
  10. 如何ocr识别图片中是否有logo?4种思路解决方案分析
  11. 中国最令人崩溃的25个姓氏,排名第1位的,打死都想不到
  12. 关于里程碑图 2017.01
  13. ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated
  14. bzoj 1269 editor
  15. 《Unity 5.x游戏开发实战》一1.9 添加一个水平面
  16. xilinx 高速收发器Serdes深入研究 GTX-3(时钟纠正clock correction)
  17. U盘文件丢失了怎么办?一串英文字符即可快速帮你找回,秒学!
  18. c++常见面试问题总结
  19. python读取身份证中的生日信息
  20. Mes系统运营管理办法规范

热门文章

  1. C++ Qt高仿QQ影音视频播放器 (二)
  2. 下一代微服务!Service Mesh 2018年度总结
  3. 逻辑与和逻辑或,比较
  4. python学习笔记9.2-文件及文件夹操作
  5. 《C语言程序设计》第五版谭浩强课后答案 第九章《用户自己建立数据类型​》习题答案 (大一大二、考研、计算机二级必看)
  6. 数据可视化带你了解关于妈妈们的那些事儿
  7. 【STM32】芯片自锁、No Cortex-M SW Device Found/HardFault_Handler无法下载等问题的解决办法
  8. 浏览器缓存机制(强缓存和协商缓存)
  9. 采用RNN为小Baby起个英文名字by SixInNight
  10. MATLAB读二进制文件