打家劫舍2
class Solution {
public:
int rob(vector<int>& nums) {
//使用动态规划 的算法
int len = nums.size();
if(len==0)
return 0;
if(len==1)
return nums[0];
vector<int> dp(len, 0);
vector<int> dp_2(len, 0);
dp[0] = nums[0];
//int max_r=0;
//表示遍历的是从第0- n-1个
for (int i = 1; i<len - 1; ++i)
{
if (i == 1)
{
dp[i] = max(nums[i], dp[i - 1]);
}
else
{
dp[i] = max(nums[i] + dp[i - 2], dp[i - 1]);
}
}
int max_result = dp[len - 2];
//表示遍历的是从第1-n个
dp_2[1] = nums[1];
for (int j = 2; j<len; ++j)
{
if (j == 2)
dp_2[j] = max(nums[j], dp_2[j - 1]);
else
dp_2[j] = max(nums[j] + dp_2[j - 2], dp_2[j - 1]);
}
max_result = max_result>dp_2[len - 1] ? max_result : dp_2[len - 1];
return max_result;
}
};