解題思路
一、定義數組元素的含義
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()];
}
};