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.
Example 1:
Input: [1,2,3,1] Output: 4 Explanation: Rob house 1 (money = 1) and then rob house 3 (money = 3). Total amount you can rob = 1 + 3 = 4.
Example 2:
Input: [2,7,9,3,1] Output: 12 Explanation: Rob house 1 (money = 2), rob house 3 (money = 9) and rob house 5 (money = 1). Total amount you can rob = 2 + 9 + 1 = 12.
动态规划
//java
class Solution {
public int rob(int[] nums) {
int curMax = 0, curPrePreMax = 0;
for (int cur : nums) {
int temp = curMax;
curMax = Math.max(curMax, curPrePreMax + cur);
curPrePreMax = temp;
}
return curMax;
}
}
专业窃贼的动态规划策略
探讨了在不触动相邻房屋警报系统的情况下,如何通过动态规划算法实现最大金额盗窃的策略。通过两个示例说明了算法的具体应用,展示了如何在一系列房屋中选择最佳盗窃方案。
445

被折叠的 条评论
为什么被折叠?



