百事可乐网站建设优缺点,wordpress配置主题,找工程分包网站,小米wordpress你是一个专业的小偷#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入#xff0c;系统会自动报警。
给定一个代表每个房屋存放金额的…你是一个专业的小偷计划偷窃沿街的房屋。每间房内都藏有一定的现金影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统如果两间相邻的房屋在同一晚上被小偷闯入系统会自动报警。
给定一个代表每个房屋存放金额的非负整数数组计算你 不触动警报装置的情况下 一夜之内能够偷窃到的最高金额。
示例 1
输入[1,2,3,1]
输出4
解释偷窃 1 号房屋 (金额 1) 然后偷窃 3 号房屋 (金额 3)。偷窃到的最高金额 1 3 4 。
示例 2
输入[2,7,9,3,1]
输出12
解释偷窃 1 号房屋 (金额 2), 偷窃 3 号房屋 (金额 9)接着偷窃 5 号房屋 (金额 1)。偷窃到的最高金额 2 9 1 12 。提示
1 nums.length 1000 nums[i] 400
class Solution {
public:int rob(vectorint nums) {//不算是背包问题没有给定容量//dp[i] : 偷i(包括i)那么i之前的最大值为dp[i]//递归关系偷i和不偷i取决于i-1和i-2如果i-1偷了那i不能偷。反之相反//偷i那么i-1不能偷了dp[i] dp[i-2] nums[i] 先加上i的再考虑包括i-2之前的最大价值//不偷i说明可以偷i-1(包括i-1) 之前的最大价值。dp[i] dp[i-1];if(nums.size() 2) return nums[0];vectorintdp(nums.size()1,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-1], dp[i-2] nums[i]);}return dp[nums.size()-1];}
};