leetcode 198 打家劫舍(java easy 動態規劃)

 找到規律,推導狀態轉移方程

分析子問題

面對第i家房子,如果打劫,那麼i-1家就不能進,那麼最大財務就是前i-2家累計財富+第i家打劫的財富

如果不打劫i家,那麼在第i家門口徘徊的時候,身上的最大錢財就是前i-1家非法獲得的財富

所以就可以得到狀態轉移方程

 

代碼

class Solution {
    public int rob(int[] nums) {
        if(nums.length==0){
            return 0;
        }
        if(nums.length==1){
            return nums[0];
        }
        int[] dp = new int[nums.length];
        dp[0]=nums[0];
        dp[1]=Math.max(nums[0],nums[1]);
        for(int i=2;i<nums.length;i++){
            dp[i]=Math.max(dp[i-2]+nums[i], dp[i-1]);
        }
        return dp[nums.length-1];
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章