解题博客:按摩师的预约问题
题目描述
在一个按摩师的工作日中,她会收到源源不断的预约请求,每个请求都有一个特定的时长。每个预约之间必须有一个休息时间,因此她不能接受相邻的预约。目标是,在所有预约中,选择若干个预约,使得总的预约时间最大。我们需要根据给定的预约时长序列,找到一个最佳的预约组合,并返回总的时长。
问题理解
- 每个预约都有一个时长。
- 若选择一个预约,接下来的预约必须跳过一个,否则就会与已选择的预约冲突。
- 我们需要在所有预约中选择若干个,使得选择的预约总时长最大。
例如,给定一个预约请求时长序列 [30, 15, 60, 75, 45, 15, 15, 45],按摩师可以选择一组预约,使得这些预约的总时长最大。
解题思路
这个问题可以被视作一个典型的动态规划问题,类似于 “打家劫舍(House Robber)” 问题。由于每个预约必须间隔一个时段,我们不能简单地选择连续的请求。因此,需要动态规划来寻找最优解。
动态规划状态
我们定义一个数组 dp[i] 来表示考虑前 i 个预约时能够获得的最大总时长。
dp[i]既可以由不选择第i个预约得到:dp[i-1]。- 也可以由选择第
i个预约得到:dp[i-2] + nums[i],因为如

最低0.47元/天 解锁文章
245

被折叠的 条评论
为什么被折叠?



