原题链接:https://leetcode-cn.com/problems/minimum-cost-for-tickets/

1、递归+记忆化

vector<int> days,costs;
map<int,int> memo;
vector<int> duration{1,7,30};int mincostTickets(vector<int>& days, vector<int>& costs) {this->costs=costs;this->days=days;return dfs(0);
}int dfs(int i){int len=days.size();if(i>=len){return 0;}int ans=INT_MAX;if(memo.count(i)){return memo[i];}int j=i;for(int k=0;k<3;k++){while(j<len&&days[j]<days[i]+duration[k]){j++;//找出i之后购买相应天数火车票的位置j}ans=min(ans,dfs(j)+costs[k]);}memo[i]=ans;return ans;
}

2、动态规划+记忆化

用递归方法实现的动态规划

dp(i)表示第i天出行的最小花费

状态转移

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

使用记忆化方法,将每一步的状态保存到memo中,如果每次dp时memo中已有就直接返回。

vector<int> costs;
set<int> dayset;
map<int,int> memo;
int mincostTickets(vector<int>& days, vector<int>& costs) {this->costs=costs;for(auto day:days){dayset.insert(day);}return dp(0);
}int dp(int i){if(i>365){return 0;}int ans=0;if(memo.count(i)){return memo[i];}if(dayset.count(i)){ans=min(min(dp(i+1)+costs[0],dp(i+7)+costs[1]),dp(i+30)+costs[2]);}else{ans=dp(i+1);}memo[i]=ans;return ans;
}

leetcode算法题--最低票价★相关推荐

  1. LeetCode算法题-Nth Digit(Java实现)

    这是悦乐书的第215次更新,第228篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第83题(顺位题号是400).找到无限整数序列的第n个数字1,2,3,4,5,6,7,8 ...

  2. LeetCode算法题-Reverse Linked List(Java实现)

    这是悦乐书的第192次更新,第195篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第51题(顺位题号是206).反转单链表.例如: 输入:1-> 2-> 3- ...

  3. LeetCode算法题-Convert a Number to Hexadecimal(Java实现)

    这是悦乐书的第219次更新,第231篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第86题(顺位题号是405).给定一个整数,写一个算法将其转换为十六进制.对于负整数,使 ...

  4. leetcode算法题--零钱兑换

    原题链接:https://leetcode-cn.com/problems/coin-change/ 相关题目:leetcode算法题–完全平方数★ 动态规划 dp[i] i从0到amount,dp[ ...

  5. leetcode算法题-- 买卖股票的最佳时机

    原题链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/ 这类股票题目请见leetcode算法题–最佳买卖股票时机含 ...

  6. leetcode算法题--买卖股票的最佳时机 II

    原题链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/ 这类股票题目请见leetcode算法题–最佳买卖股票 ...

  7. leetcode算法题--买卖股票的最佳时机含手续费

    原题链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/ 这类股票题目请见 ...

  8. leetcode算法题--完全平方数★

    原题链接:https://leetcode-cn.com/problems/perfect-squares/ 相关题目:leetcode算法题–零钱兑换 1.回溯法 就是暴力法,套路就是递归,但是有很 ...

  9. leetcode算法题--不同的二叉搜索树

    原题链接:https://leetcode-cn.com/problems/unique-binary-search-trees/ 相关题目:leetcode算法题--不同的二叉搜索树 II 1.递归 ...

最新文章

  1. 《软件开发性能优化系列》之主键、索引设计
  2. SAP 金额在表中的存储及货币转换因子
  3. 通过自定义资源扩展Kubernetes
  4. 关于Spring Bean实例注册的流程
  5. 炫技式的精彩对辩撑起《哗变》
  6. delphi 解析一维条码_一维码和二维码区别有哪些
  7. Android:进度条加载
  8. java junit 运行_运行Junit方法项目启动不了
  9. 机器学习笔记(六):数据归一化 | 凌云时刻
  10. netstat 查看网络连接、路由表、接口状态、端口信息
  11. nginx系列第一篇:nginx源码下载,编译和安装
  12. 手机上最好用的五笔输入法_手机输入法哪家最好用?我推荐百度,不好用你打我...
  13. CF364D Ghd
  14. 腾达无线路由器怎么设置能让自己的网速快
  15. python绘制黑白棋盘_python – 在二维数组中创建一个黑白棋盘
  16. (详细易懂)一篇文章让你读懂到底什么是Ajax
  17. [Andriod官方训练教程]管理Activity的生命活动之开始一个Activity
  18. 金融学本科跨考计算机,跨考研究生怎么选专业,计算机金融最喜欢谁?小编今天告诉你...
  19. 英语读书笔记-Book Lovers Day 06
  20. Go之Go语言是什么?Go有什么特点?Go语言的应用前景如何?

热门文章

  1. python在审计中的应用-【干货】Python自动化审计及实现
  2. python详细安装教程linux-Linux系统如何安装Python?新手教程
  3. 不属于python开发用户界面第三方库的是-模拟试卷C【单项选择题】
  4. python三层装饰器-python中自带的三个装饰器的实现
  5. 查看python版本号-怎么查看python版本号
  6. python爬虫正则表达式实例-Python 正则表达式爬虫使用案例解析
  7. python学习音频-机器学习利用Python进行音频数据增强
  8. html5知识总结,HTML5初级知识总结
  9. python中的迭代库
  10. 网络编程学习笔记(tcp_connect函数)