题目:

分析:
假设dp[i][0]表示前i个预约,第i个不接:
dp[i] = dp[i-1]
dp[i][1]表示前i个预约,第i个接受;
dp[i] = dp[i-1] + nums[i]
由于此时第i-1必不能接受,那么:
dp[i-1] = dp[i-2]
因此:
dp[i] = dp[i-2] + num[i]
综上所述:
dp[i] = max(dp[i-1], dp[i-2] + nums[i])
int massage(vector<int>&nums)
{
int ppre = 0, pre = 0, now = 0;
for (int i = 1, n = nums.size(); i <= n; i++) {
ppre = pre; pre = now;
now = max(pre, ppre + nums[i - 1]);
}
return now;
}
网友评论