leetCode 198. 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.

解题思路:

房间一共有N个,先判断到目前为止,前i个房间能获得最多的金钱。

典型的动态规划。

其中转移方程如下:

maxV[i] = max( maxV[i - 2] + a[i],maxV[i-1]);

其中数组a[i]为第i个房间隐藏的金钱。maxV[i]表示前i个房间能获得的最多的钱。


代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class  Solution {
public :
     int  rob(vector< int >& nums) 
     {
         //处理特殊情况
         if  (nums.empty())
             return  0;
         if  (nums.size() == 1)
             return  nums[0];
         if  (nums.size() == 2)
             return  nums[0] > nums[1] ? nums[0] : nums[1];
         //处理正常情况   
         int  * maxV =  new  int [nums.size()];
     
         maxV[0] = nums[0];
         maxV[1] = nums[0] > nums[1] ? nums[0] : nums[1];
     
         for  ( int  i = 2 ; i < nums.size() ; ++i)
         {
             maxV[i] = max(maxV[i - 2] + nums[i], maxV[i - 1]);
         }
     
         int  result = maxV[nums.size() - 1];
         delete  maxV;
         maxV = NULL;
         return  result;
     }
};



本文转自313119992 51CTO博客,原文链接:http://blog.51cto.com/qiaopeng688/1844956
相关文章
|
3月前
代码随想录 Day46 动态规划14 LeetCode T392 判断子序列 T115 不同的子序列
代码随想录 Day46 动态规划14 LeetCode T392 判断子序列 T115 不同的子序列
38 0
|
3天前
[leetcode~数位动态规划] 2719. 统计整数数目 hard
[leetcode~数位动态规划] 2719. 统计整数数目 hard
|
8天前
|
算法
代码随想录算法训练营第五十六天 | LeetCode 647. 回文子串、516. 最长回文子序列、动态规划总结
代码随想录算法训练营第五十六天 | LeetCode 647. 回文子串、516. 最长回文子序列、动态规划总结
30 1
|
1月前
|
Go C++
【力扣】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
【2月更文挑战第17天】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
31 8
|
1月前
动态规划之解码方法【LeetCode】
动态规划之解码方法【LeetCode】
|
1月前
动态规划之使用最小花费爬楼梯【LeetCode】
动态规划之使用最小花费爬楼梯【LeetCode】
|
1月前
|
算法
动态规划之第 N 个泰波那契数/三步问题【leetCode】【算法】
动态规划之第 N 个泰波那契数/三步问题【leetCode】【算法】
|
2月前
|
机器学习/深度学习 人工智能 测试技术
【动态规划】【矩阵快速幂】LeetCode2851. 字符串转换
【动态规划】【矩阵快速幂】LeetCode2851. 字符串转换
|
3月前
|
算法 C++ 机器人
力扣 C++|一题多解之动态规划专题(1)
力扣 C++|一题多解之动态规划专题(1)
42 0
力扣 C++|一题多解之动态规划专题(1)
|
3月前
代码随想录 Day47 动态规划15 LeetCode T583 两个字符串的删除操作 T72 编辑距离
代码随想录 Day47 动态规划15 LeetCode T583 两个字符串的删除操作 T72 编辑距离
35 0