一個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,
是以她不能接受相鄰的預約。給定一個預約請求序列,替按摩師找到最優的預約集合(總預約時間最長),傳回總的分鐘數。
示例1:
輸入: [1,2,3,1]
輸出: 4
解釋: 選擇 1 号預約和 3 号預約,總時長 = 1 + 3 = 4。
示例2:
輸入: [2,7,9,3,1]
輸出: 12
解釋: 選擇 1 号預約、 3 号預約和 5 号預約,總時長 = 2 + 9 + 1 = 12。
示例3:
輸入: [2,1,4,5,3,1,1,3]
輸出: 12
解釋: 選擇 1 号預約、 3 号預約、 5 号預約和 8 号預約,總時長 = 2 + 4 + 3 + 3 = 12。
package com.gong;
/**
* dp[]數組記錄nums[]數組前i項按要求組合最大值
* */
public class JiSi {
public static int massage(int[] nums){
if(nums==null)
{
return 0;
}
if(nums.length==0){
return 0;
}
if(nums.length==1){
return nums[0];
}
int[] dp=new int[nums.length];
dp[0]=nums[0];
dp[1]=nums[1];
for(int i=2;i<nums.length;i++){
dp[i]=Math.max(dp[i-2]+nums[i],dp[i-1]);
}
for(int j=0;j<dp.length;j++)
{
System.out.print(dp[j]+" ");
}
return dp[nums.length-1];
}
public static void main(String[] args) {
int[] muns={1,6,9,4,5,6,9,3,9};
int result=0;
result=massage(muns);
System.out.println();
System.out.println("result="+result);
}
}