打家劫舍

北城余情 提交于 2019-11-28 04:19:10

题目链接:

涉及知识:动态规划

分析:

题目中的例子:2 7 9 3 1

2 7 9 3 1
2 7 11 10 12
不拿 0 2 7 11 10

设 dp[k] 表示 k 个元素所能打劫的最大值。

则状态转移方程 dp[k] = max(dp[k-2] + cur,dp[k-1])

dp[k-2] + cur:表示不拿第 k-1 个元素,当前元素 + (前(k-2)个元素所能达到的最大值)。

dp[k-1] :表示 k-1 个元素所能打劫的最大值。

代码:

class Solution {
    public int rob(int[] nums) {
        if(nums.length == 0){
            return 0;
        }

        int take = 0, noTake = 0;
        int tmp = 0;

        for(int i = 0; i < nums.length; ++i){
            tmp = noTake + nums[i];
            noTake = Math.max(take, noTake);
            take = tmp;
        }

        return Math.max(take, noTake);
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!