LeetCode 198 打家劫舍
阿新 • • 發佈:2020-08-01
題目描述連結: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; } };