【动态规划】Leetcode编程题解:198. House Robber Add to List
2017-05-07 23:41
337 查看
题目:
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 andit 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 tonightwithout alerting the police.
这道题目是很符合动态规划的定义,主要是比较到到第n-2所房子所抢劫金额加上第n所房子的金额与到第n-1所房子所抢劫的金额之间的大小关系。
代码如下:
解法一:
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 andit 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 tonightwithout alerting the police.
这道题目是很符合动态规划的定义,主要是比较到到第n-2所房子所抢劫金额加上第n所房子的金额与到第n-1所房子所抢劫的金额之间的大小关系。
代码如下:
解法一:
class Solution { public: int rob(vector<int> nums) { int len = nums.size(); if(len == 0) return 0; if(len == 1) return nums[0]; else { vector<int> maxv; maxv.push_back(nums[0]); maxv.push_back(max(nums[0], nums[1])); for(int i = 2; i < len; i++) { maxv.push_back(max(maxv[i - 2] + nums[i], maxv[i - 1])); } return maxv[len - 1]; } } };解法二:
class Solution { public: int rob(vector<int> nums) { int len = nums.size(), a = 0, b = 0; for(int i = 0; i < len; i++) { if(i % 2 == 1) { a += nums[i]; a = max(a, b); } else { b += nums[i]; b = max(a, b); } } return max(a, b); } };
相关文章推荐
- [置顶] [编程题] LeetCode上的Dynamic Programming(动态规划)类型的题目
- 【动态规划】Leetcode编程题解:516. Longest Palindromic Subsequence Add to List
- 【动态规划】Leetcode编程题解:70. Climbing Stairs
- 【动态规划】Leetcode编程题解:121. Best Time to Buy and Sell Stock Add to List
- 【动态规划】Leetcode编程题解:303. Range Sum Query - Immutable Add to List
- 【动态规划】Leetcode编程题解:338. Counting B 4000 its
- 【动态规划】Leetcode编程题解:523. Continuous Subarray Sum Add to List
- Frog Jump--深度遍历,动态规划--leetcode
- LeetCode题目:Scramble String,三维动态规划
- 【leetcode】Unique Paths II(动态规划)
- leetcode198.[DP]House Robber
- [LeetCode]Interleaving String关于遍历和动态规划
- leetcode_[python/C++]_91_Decode Ways_动态规划
- 并查集 leetcode 编程题
- LeetCode 403. Frog Jump|动态规划
- LeetCode--Best Time to Buy and Sell Stock (贪心策略 or 动态规划)
- 【Leetcode】动态规划问题详解(持续更新)
- LeetCode 322. Coin Change Python 动态规划/BFS解法
- [LeetCode 62] Unique Paths(教科书般的动态规划)
- leetcode801 Minimum Swaps To Make Sequences Increasing (动态规划)