动态规划-面试题 17.16:
按摩师一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。
递归方法 :
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); //最后比较两种情况,得出当前情况的最优解
}
}
欢迎访问csdn的博客:
https://blog.csdn.net/kangshihang1998?spm=1010.2135.3001.5343