打家劫舍(简单)
2020年5月24日
题目来源:力扣
解题
动态规划(DP)
动态规划方程:dp[n] = MAX( dp[n-1], dp[n-2] + num )
思想是在当前位置 n 房屋可盗窃的最大值,要么就是 n-1 房屋可盗窃的最大值,要么就是 n-2 房屋可盗窃的最大值加上当前房屋的值,二者之间取最大值。
状态转移方程怎么那么难想阿!
class Solution {
public int rob(int[] nums) {
if(nums.length==0) return 0;
int []dp=new int[nums.length+1];
dp[0]=0;
dp[1]=nums[0];
for(int i=2;i<=nums.length;i++){
dp[i]=Math.max(dp[i-1],dp[i-2]+nums[i-1]);
}
return dp[nums.length];
}
}