1. 程式人生 > 實用技巧 >LeetCode 198 打家劫舍

LeetCode 198 打家劫舍

題目描述連結:https://leetcode-cn.com/problems/house-robber/

解題思路:動態規劃。(1)狀態確定:dp[i]表示從一開始劫到i戶人家的現金,另外要包括此戶人家。

(2)邊界確定:dp[0]=nums[0],dp[1]=max(nums[0],nums[1])。

(3)狀態轉移方程:dp[i]=max(dp[j])+nums[i] 其中 0=< j <i-1

LeetCode C++解題參考程式碼:

class Solution {
public:
    int rob(vector<int
>& nums) { int len=nums.size(); if(len==0){ return 0; } if(len==1){ return nums[0]; } if(len==2){ return max(nums[0],nums[1]); } int dp[len]; dp[0]=nums[0]; dp[1]=nums[1];
int maxium=dp[0];//,dp[1]); for(int i=2;i<len;++i){ dp[i]=maxium+nums[i]; maxium=max(maxium,dp[i-1]); } maxium=max(maxium,dp[len-1]); return maxium; } };