leetcode-198. 打家劫舍
class Solution { public: int rob(vector<int>& nums) { if(nums.size()==0) return 0; if(nums.size()==1) return nums[0]; // dp[i]表示前i间房屋能偷窃到的最高总金额 vector<int> dp(nums.size(), 0); dp[0] = nums[0]; dp[1] =max(nums[0],nums[1]); for(int i = 2; i < nums.size(); i++){ dp[i] = max(dp[i-2]+nums[i],dp[i-1]); // 今天选择偷,偷前i间的金额为dp[i-2]+nums[i] // 今天选择不偷,偷前i间的金额为dp[i-1] } return dp[nums.size()-1]; } };