解题思路
一、定义数组元素的含义
dp[i]
:第i次预约时,按摩师总预约时间长
二、找出关系数组元素间的关系式
第i次时,总预约时长,要么是从第i-2次接受预约后,本次也接受预约,要么本次不接受预约
dp[i] = max(dp[i - 2] + nums[i-1], dp[i - 1]);
三、找出初始值
由题目可知,第1次接受预约时,总预约时长为dp[1]=nums[0]
代码
class Solution {
public:
int massage(vector<int>& nums) {
if (nums.size() == 0) return 0;
vector<int> dp(nums.size() +1);
//初始值
dp[1] = nums[0];
//状态转移
for (int i=2;i<=nums.size();i++)
{
dp[i] = max(dp[i - 2] + nums[i-1], dp[i - 1]);
}
return dp[nums.size()];
}
};