面試題 17 16 按摩師

2021-10-24 15:32:13 字數 1004 閱讀 5402

乙個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,因此她不能接受相鄰的預約。給定乙個預約請求序列,替按摩師找到最優的預約集合(總預約時間最長),返回總的分鐘數。

注意:本題相對原題稍作改動

示例 1:

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

輸出: 4

解釋: 選擇 1 號預約和 3 號預約,總時長 = 1 + 3 = 4。

1.暴力dfs列舉每個數字選不選

2.dp,  dp[i]=max(nums[i]+dp[i-2],dp[i-1])

class solution:

def massage(self, nums: list[int]) -> int:

res=0

def dfs(i,s,tmp):

nonlocal res

if i>=len(nums):

res=max(res,s)

return

dfs(i+1,s,tmp)

if i==0 or i-1 not in tmp:

dfs(i+1,s+nums[i],tmp+[i])

dfs(0,0,)

return res

class solution:

def massage(self, nums: list[int]) -> int:

if not nums:return 0

dp=[0 for _ in range(len(nums))]

for i in range(len(nums)):

if i==0:

dp[i]=nums[i]

elif i==1:

dp[i]=max(nums[0],nums[1])

else:

dp[i]=max(dp[i-1],nums[i]+dp[i-2])

return dp[-1]

面試題17,16 按摩師

乙個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,因此她不能接受相鄰的預約。給定乙個預約請求序列,替按摩師找到最優的預約集合 總預約時間最長 返回總的分鐘數。注意 本題相對原題稍作改動 示例 1 輸入 1,2,3,1 輸出 4 解釋 選擇 1 號預...

面試題 17 16 按摩師

題目 乙個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,因此她不能接受相鄰的預約。給定乙個預約請求序列,替按摩師找到最優的預約集合 總預約時間最長 返回總的分鐘數。注意 本題相對原題稍作改動 示例 1 輸入 1,2,3,1 輸出 4 解釋 選擇 1...

面試題 17 16 按摩師

題目 乙個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,因此她不能接受相鄰的預約。給定乙個預約請求序列,替按摩師找到最優的預約集合 總預約時間最長 返回總的分鐘數 解法 動態規劃 思路 數學符號 dp i 表示到達位置i的最長時間 狀態轉移方程 對...