leetcode 打家劫舍198

简单的动态规划问题,注意初始变量的初始化。

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

给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。

示例 1:

输入: [1,2,3,1]
输出: 4
解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
  偷窃到的最高金额 = 1 + 3 = 4 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/house-robber
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

附录源码:

复制代码
 1 #include <vector>
 2 #include<iostream>
 3 using namespace std;
 4 class Solution {
 5 public:
 6     int Max(int p1, int p2){ return p1>p2? p1 : p2;}
 7     int rob(vector<int>& nums) {
 8         int p1 = 0;
 9         int p2 = 0;
10         int result = 0;
11         if(nums.empty()) return 0;
12         if(nums.size() == 1)  return nums[0];
13         if(nums.size() == 2)
14         {
15             p1 = nums[0];
16             p2 = nums[1];
17             result = Max(p1,p2);
18         }
19             p1 = nums[0];
20             p2 = nums[1];
21             result = Max(p1,p2);
22         for(int  i = 2; i <nums.size(); i++)
23         {
24             result = Max(p1+nums[i], p2);
25             printf("%d  result%d \n",i ,result);
26             p1 = p2;
27             p2 =result;
28         }
29         return result;
30     }
31 };
32 
33 int main()
34 {
35     vector<int>v1 ={2,1,1,2};
36     Solution s;
37     int result =s.rob(v1);
38     return 0;
39 }
复制代码

 

posted @   zzas12345  阅读(154)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示