動態規劃的思想。我們不僅要從開始往後找最優解。像這種能晚發生就晚發生的可以逆向,從後往前找。
在乙個火車旅行很受歡迎的國度,你提前一年計劃了一些火車旅行。在接下來的一年裡,你要旅行的日子將以乙個名為 days 的陣列給出。每一項是乙個從 1 到 365 的整數。
火車票有三種不同的銷售方式:
一張為期一天的通行證售價為 costs[0] 美元;
一張為期七天的通行證售價為 costs[1] 美元;
一張為期三十天的通行證售價為 costs[2] 美元。
通行證允許數天無限制的旅行。 例如,如果我們在第 2 天獲得一張為期 7 天的通行證,那麼我們可以連著旅行 7 天:第 2 天、第 3 天、第 4 天、第 5 天、第 6 天、第 7 天和第 8 天。
返回你想要完成在給定的列表 days 中列出的每一天的旅行所需要的最低消費。
看了題解的提示有了思路:從後往前,如果從第i天開始到最後,那麼我最便宜需要多少錢?而第i天如果沒有要出行,則不需要買;需要出行則有三種方案:a.買1天的,再加上後一天到最後的最便宜**;b.買7天的,再加上7天後的那天到最後一天最便宜的**;c.買30天的,再加上30天後的那天到最後一天最便宜的**。
public int mincosttickets(int days, int costs)
if( days[daysindex] + 6 >= yearnum)
if(days[daysindex] + 29 >= yearnum)
daysmoney[i] = math.min(costs[0] + daysmoney[i+1], costs[1] + daysmoney[i+7]);
daysmoney[i] = math.min(daysmoney[i], costs[2] + daysmoney[i + 30]);
daysindex--;
if(daysindex < 0)
return daysmoney[i];
}else
}return daysmoney[0];
}
LeetCode 983 最低票價
在乙個火車旅行很受歡迎的國度,你提前一年計劃了一些火車旅行。在接下來的一年裡,你要旅行的日子將以乙個名為 days 的陣列給出。每一項是乙個從 1 到 365 的整數。火車票有三種不同的銷售方式 一張為期一天的通行證售價為 costs 0 美元 一張為期七天的通行證售價為 costs 1 美元 一張...
LeetCode983 最低票價
在乙個火車旅行很受歡迎的國度,你提前一年計劃了一些火車旅行。在接下來的一年裡,你要旅行的日子將以乙個名為days的陣列給出。每一項是乙個從1到365的整數。火車票有三種不同的銷售方式 通行證允許數天無限制的旅行。例如,如果我們在第 2 天獲得一張為期 7 天的通行證,那麼我們可以連著旅行 7 天 第...
leetcode983 最低票價
在乙個火車旅行很受歡迎的國度,你提前一年計劃了一些火車旅行。在接下來的一年裡,你要旅行的日子將以乙個名為 days 的陣列給出。每一項是乙個從 1 到 365 的整數。火車票有三種不同的銷售方式 一張為期一天的通行證售價為 costs 0 美元 一張為期七天的通行證售價為 costs 1 美元 一張...