# leetcode 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.

dp[i] = max(dp[i-1] , dp[i-1]+nums[i-1])) ,其中dp表示第i个房间选择之后，累计总金额。

dp[i] = max(dp[i-1], max(dp[i-2], dp[i-2]+nums[i-2])+nums[i-1])

dp[i] = max(dp[i-1] , max(dp[i-2], dp[i-2]+0) +nums[i-1]);

dp[i]= max(dp[i-1] , dp[i-2]+ nmus[i-1]);

/**
* Created by kyle on 2016/6/1.
*/
public class HouseRobber {
/******
* 动态规划问题，每一步的状态依赖于两个决策，1，上一步是否选取，2，在上一步没选取的状态下，这一步是否选取.

上一步没有选取 那么dp[i] = dp[i-2]+ nums[i-1];

上一步选取了 ，这一步不能选了， dp[i] = dp[i-1];

那么dp[i]的最优解为max(dp[i-2]+ nums[i-1], dp[i-1]);
* @param nums
* @return
*/
static  public  int  houseRobber(int[] nums){
if(nums == null || nums.length <1){
return 0;
}
int[] dp = new int[nums.length+1];
dp[0] = 0;
dp[1] = nums[0];

for(int i = 2; i< nums.length+1; i++){
dp[i]= Math.max(dp[i-1], dp[i-2]+ nums[i-1]);
}
return  dp[nums.length];
}
static  public  void main(String[] a){
int[] nums={2,4, 5 ,8,1,9,8,3,0,7,6};
int profit = houseRobber(new int[0]);
System.out.println("profit  is :" + profit);
}
}


• 本文已收录于以下专栏：

## LeetCode#198. House Robber

You are a professional robber planning to rob houses along a street. Each house has a certain amount...

## LeetCode动态规划198. House Robber思路解析

LeetCode动态规划198. House Robber思路解析，用最容易理解的递归解释

## Leetcode 198. House Robber

You are a professional robber planning to rob houses along a street. Each house has a certain amount...

## Leetcode[198]-House Robber

You are a professional robber planning to rob houses along a street. Each house has a certain amount...

## LeetCode - 198. House Robber

举报原因： 您举报文章：深度学习：神经网络中的前向传播和反向传播算法推导 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)