动态规划———按摩师

一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。

输入:[1,2,3,1]

输出:4

解释:选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4

输入:[2,7,9,3,1]

输出:12

解释:选择 1 号预约、 3 号预约和 5 号预约,总时长 = 2 + 9 + 1 = 12。

解法:

动态规划:第 i 天的选择只有接受预约和不接受两种,而这种选择是受前一天的选择所制约;假如昨天没有选择,那么今天就可以接受预约或不接受,若昨天选择了,则今天不能接受预约。所以可以采用动态规划,今天如果服务的话,最大服务时间是昨天不选择服务的最大服务时间 + 今天的服务时间;假如今天不服务,那么最大服务时间就是昨天不服务或昨天服务这两个值的最大值。所以可以设置数组d[0][i]表示第i天不服务的最大服务时间,d[1][i]则表示第i天服务。


空间优化:因为如果第 i 天服务的话,那么第 i - 1 天必定不能服务,所以最大服务时间d[ i ] = d[ i - 2 ] + nums[ i ],

如果第 i 天不服务的话,那么d[ i ] = d [ i - 1] ,所以综上 d [ i ] = max ( d[ i - 2 ] + nums[ i ] , d [ i - 1] )

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,440评论 0 2
  • 1. 下列叙述错误的是()。 (2.0 分) A. 质量管理包括QA和QC一切活动的全部过程 B. 影像质量是指对...
    我们村我最帅阅读 4,113评论 0 8
  • 1. 关于诊断X线机准直器的作用,错误的是()。 (6.0 分) A. 显示照射野 B. 显示中心线 C. 屏蔽多...
    我们村我最帅阅读 10,896评论 0 5
  • 排序算法几种分类方式: 1,稳定排序和不稳定排序 如果a==b, 当排序之前a在b的前面,排序后,a仍然在b...
    fly_ever阅读 456评论 0 0
  • 《Call the card》 is a magical action adventure game. In th...
    OI_cc97阅读 92评论 0 0