动态规划-面试题 17.16:
【摘要】
按摩师一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。递归方法 :
public static int rec_opt(int []arr...
按摩师一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。
递归方法 :
-
-
public static int rec_opt(int []arr,int i){
-
//递归终止的条件,意味着如果只能选第一个,那么最好的方法就是arr[0]
-
if(i==0)
-
return arr[0];
-
//处理特殊情况,因为题目要求间隔选择
-
else if(i==1)
-
return Math.max(arr[0],arr[1]);
-
else{
-
int a = rec_opt(arr,i-2) + arr[i]; //对于每一个顾客无非两种情况,选或者不选,如果选的话,就是,i-2个的最优解加上当前的value
-
int b = rec_opt(arr,i-1); //如果不选,那么就只能使用上一个的最优解
-
return Math.max(a,b); //最后比较两种情况,得出当前情况的最优解
-
}
-
}
文章来源: kangshihang.blog.csdn.net,作者:康世行,版权归原作者所有,如需转载,请联系作者。
原文链接:kangshihang.blog.csdn.net/article/details/117195618
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)