当前位置:   article > 正文

Leetcode 983. 最低票价 (动态规划)_leetcode 最少价格 机票预订

leetcode 最少价格 机票预订

// dp[i] 表示第i天的最少费用,如果这天不再计划中,那么dp[i] = dp[i-1],否则 dp[i] = min(dp[i-1]+cost[0], dp[i-7]+cost[1], dp[i-30]+cost[2]),这里为了处理越界,用max(0,i-30)处理即可。

  1. class Solution {
  2. public:
  3. int mincostTickets(vector<int>& days, vector<int>& costs) {
  4. // dp[i] 表示第i天旅行的最少费用。
  5. unordered_set<int> travelDays;
  6. for(auto day:days){
  7. travelDays.insert(day);
  8. }
  9. int lastDay = days.back();
  10. vector<int> dp(lastDay+1);
  11. for(int i=1;i<=lastDay;i++){
  12. if(!travelDays.count(i)){
  13. dp[i] = dp[i-1];
  14. }else{
  15. dp[i] = min(dp[max(0,i-1)]+costs[0],min(dp[max(0,i-7)]+costs[1],dp[max(0,i-30)]+costs[2]));
  16. }
  17. }
  18. return dp[lastDay];
  19. }
  20. };

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/398224
推荐阅读
相关标签
  

闽ICP备14008679号