当前位置: 首页 > news >正文

leetcode_198_打家劫舍


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

"偷": 既然"偷"了 i那就肯定不能偷i-1了,但是为了使"偷"的尽可能多除了必须不能"偷"的全要"偷",
所以得到第一个部分dp[i]=nums[i]+dp[i-2];

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


综上实现公式应为dp[i]=max(nums[i]+dp[i-2],dp[i-1]);

实现代码如下

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];}


http://www.mrgr.cn/news/41427.html

相关文章:

  • 【Docker】docker的存储
  • 探索未来:hbmqtt,Python中的AI驱动MQTT
  • 十五款好看的键帽,总有一款适合你❤
  • 3 个简单的微分段项目
  • 一个基本的包括爬虫、数据存储和前端展示框架0
  • 单目3d重建
  • c语言实例 -- 循环链表
  • 【保研纪念】计算机保研经验贴——南大cs、复旦cs、中南cs、清深海洋、清软
  • Linux相关概念和重要知识点(11)(进程调度、Linux内核链表)
  • 了解芯片光刻与OPC
  • 【JWT安全】portswigger JWT labs 全解
  • Redis:初识Redis
  • 【网络安全 | 靶场搭建】Maven构建项目+报错解决方法(无法解析插件)
  • Oracle中TRUNC()函数详解
  • 典型模拟滤波器
  • 一文带你入门客制化键盘,打造专属打字利器
  • C动态内存管理
  • 【重学 MySQL】五十一、更新和删除数据
  • 在manim中实现抛物线的切线和它的视觉效果
  • 数据结构--集合框架