动态规划-面试题 17.16:

举报
ksh1998 发表于 2021/12/26 01:30:04 2021/12/26
【摘要】   按摩师一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。递归方法 :   public static int rec_opt(int []arr...

 

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

 


  
  1. public static int rec_opt(int []arr,int i){
  2. //递归终止的条件,意味着如果只能选第一个,那么最好的方法就是arr[0]
  3. if(i==0)
  4. return arr[0];
  5. //处理特殊情况,因为题目要求间隔选择
  6. else if(i==1)
  7. return Math.max(arr[0],arr[1]);
  8. else{
  9. int a = rec_opt(arr,i-2) + arr[i]; //对于每一个顾客无非两种情况,选或者不选,如果选的话,就是,i-2个的最优解加上当前的value
  10. int b = rec_opt(arr,i-1); //如果不选,那么就只能使用上一个的最优解
  11. return Math.max(a,b); //最后比较两种情况,得出当前情况的最优解
  12. }
  13. }

 

文章来源: kangshihang.blog.csdn.net,作者:康世行,版权归原作者所有,如需转载,请联系作者。

原文链接:kangshihang.blog.csdn.net/article/details/117195618

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。