题目解析
本题原型题是:983. 最低票价 - 力扣(LeetCode)
本题可以使用动态规划求解。
定义一个dp数组,dp[i] 的含义是:前 i 天,完成所有游玩日的最少花费金额。
dp[i] 可以由前面的 dp状态 推导而来:
- 如果第 i 天不是游玩日,即第 i 天不需要考虑花钱买票,那么:dp[i] = dp[i-1]
- 如果第 i 天是游玩日,那么此时有四种选择:
- 如果第 i 天被购买的"一日票"有效期覆盖,那么:dp[i] = dp[i-1] + costs[0],其中:
dp[i - 1] 是前 i-1 天的花费
costs[0] 是第 i 天的花费,即第 i 天买了当天有效的"一日票"
- 如果第 i 天被购买的"三日票"有效期覆盖,那么:dp[i] = ( i ≥