983 最低票價 動態規劃

2021-10-05 19:06:31 字數 1147 閱讀 8927

在乙個火車旅行很受歡迎的國度,你提前一年計劃了一些火車旅行。在接下來的一年裡,你要旅行的日子將以乙個名為 days 的陣列給出。每一項是乙個從 1 到 365 的整數。

火車票有三種不同的銷售方式:

一張為期一天的通行證售價為 costs[0] 美元;

一張為期七天的通行證售價為 costs[1] 美元;

一張為期三十天的通行證售價為 costs[2] 美元。

通行證允許數天無限制的旅行。 例如,如果我們在第 2 天獲得一張為期 7 天的通行證,那麼我們可以連著旅行 7 天:第 2 天、第 3 天、第 4 天、第 5 天、第 6 天、第 7 天和第 8 天。

題解:

求出第1天到最後一天的最低消費,每天消費根據以下公式取最小值

dp[i] = math.min( dp[math.max(0, i - 1)] + costs[0], dp[math.max(0, i - 7)] + costs[1], dp[math.max(0, i - 30)] + costs[2] )

對於不在days陣列的天數直接等於之前的最低消費

/**

* @param days

* @param costs

* @return

*/var

mincosttickets

=function

(days, costs)

/* 選符合條件的最小值 */

dp[i]

= math.

min(

dp[math.

max(

0, i -1)

]+ costs[0]

, dp[math.

max(

0, i -7)

]+ costs[1]

, dp[math.

max(

0, i -30)

]+ costs[2]

) index++;}

return dp[lastday];}

;// console.log(mincosttickets([1, 4, 6, 7, 8, 20], [2, 7, 15]))//11

Leetcode 動態規劃 983 最低票價

在乙個火車旅行很受歡迎的國度,你提前一年計劃了一些火車旅行。在接下來的一年裡,你要旅行的日子將以乙個名為 days 的陣列給出。每一項是乙個從 1 到 365 的整數。火車票有三種不同的銷售方式 一張為期一天的通行證售價為 costs 0 美元 一張為期七天的通行證售價為 costs 1 美元 一張...

LeetCode 983 最低票價(動態規劃)

在乙個火車旅行很受歡迎的國度,你提前一年計劃了一些火車旅行。在接下來的一年裡,你要旅行的日子將以乙個名為days的陣列給出。每一項是乙個從 1 到 365 的整數。火車票有三種不同的銷售方式 通行證允許數天無限制的旅行。例如,如果我們在第 2 天獲得一張為期 7 天的通行證,那麼我們可以連著旅行 7...

LeetCode 983 最低票價(動態規劃)

在乙個火車旅行很受歡迎的國度,你提前一年計劃了一些火車旅行。在接下來的一年裡,你要旅行的日子將以乙個名為days的陣列給出。每一項是乙個從 1 到 365 的整數。火車票有三種不同的銷售方式 通行證允許數天無限制的旅行。例如,如果我們在第 2 天獲得一張為期 7 天的通行證,那麼我們可以連著旅行 7...