当前位置: 首页 > news >正文

leetcode 787. Cheapest Flights Within K Stops K 站中转内最便宜的航班

Problem: 787. Cheapest Flights Within K Stops K 站中转内最便宜的航班

解题过程

广度优先搜索会超时,可能的情况太多了,而且不好剪枝的,不过用上记忆化搜索也是可以的

深度优先搜索 + 记忆化搜索,先用邻接表存一遍,然后分解成子问题,每次k-1,用哈希表记忆化搜索,拿到当前的最小值

Code

class Solution { public: int minmin = INT_MAX, destination, source; int ump[100000]; int dfs(vector<vector<pair<int, int>>>& array, int now, int k) { int key = (now * 100) + k; // if(ump.find(key)!=ump.end()) return ump[key]; if(ump[key] > 0) return ump[key]; int tmp, mi = INT_MAX; for(int j = 0; j < array[now].size(); j++) { if(array[now][j].first == destination) { mi = min(mi, array[now][j].second); } else if(array[now][j].first != source){ if(k==1) { continue; } tmp = dfs(array, array[now][j].first, k-1); if(tmp != INT_MAX) { tmp = tmp + array[now][j].second; } mi = min(mi, tmp); } } ump[key] = mi; return mi; } int findCheapestPrice(int n, vector<vector<int>>& flights, int src, int dst, int k) { destination = dst; source = src; // vector<vector<pair<char, short>>> array(n); vector<vector<pair<int, int>>> array(n); for(int i = 0; i < flights.size(); i++) { array[flights[i][0]].push_back( std::make_pair( flights[i][1], flights[i][2] ) ); } memset(ump, 0, sizeof(ump)); minmin = dfs(array, src, ++k); if(minmin==INT_MAX) return -1; return minmin; queue<pair<char, short>> qe; qe.push({src, 0}); int now, mincost = INT_MAX, cost; k++; while( !qe.empty() && k > 0) { int sz = qe.size(); k--; for(int i = 0; i < sz; i++) { now = qe.front().first; cost = qe.front().second; qe.pop(); for(int j = 0; j < array[now].size(); j++) { if(array[now][j].first == dst) { mincost = min(mincost, cost + array[now][j].second); } else if(array[now][j].first != now){ if(mincost > cost + array[now][j].second) { qe.push({array[now][j].first, cost + array[now][j].second}); } } } } } if(mincost==INT_MAX) return -1; return mincost; } };
http://www.jsqmd.com/news/142911/

相关文章:

  • 智能小车避障功能背后的电机驱动技术——L298N解析
  • PyGMTSAR 终极指南:5步掌握卫星干涉测量核心技术
  • 迭代器模式(Iterator):Eloquent 的 `cursor()` 方法如何实现内存高效的逐条遍历?它与 `Collection` 的遍历有何不同?
  • 2025橡胶支座厂家推荐排行榜:从产能到专利衡水正华优势尽显 - 爱采购寻源宝典
  • 终极免费指南:B站推送机器人让QQ群实时同步UP主动态
  • 实时火焰检测CNN:从零部署的完整实战指南
  • 2025年靠谱的风冷一体化加热器厂家最新权威实力榜 - 品牌宣传支持者
  • PaddlePaddle镜像集成开发环境(IDE)配置建议
  • 江苏省徐州市自建房设计公司/机构权威测评推荐排行榜 - 苏木2025
  • 微信商城小程序到底要花多少钱?资深小程序服务商为您拆解成本!
  • 2025电力电缆厂家推荐排行榜:从产能与专利看智达云强、徐工电缆实力 - 爱采购寻源宝典
  • WordPress Markdown编辑器WP-Editor.md:让写作回归纯粹与高效
  • 文本差异对比技术实战:从业务痛点到企业级解决方案
  • 一文搞懂大模型的知识蒸馏(Knowledge Distillation)
  • MUI框架用户反馈系统终极指南:打造高效用户沟通渠道
  • 宇宙的隐形脉搏:洞悉“场”的奥秘
  • PaddlePaddle镜像能否用于虚拟主播驱动?技术路径清晰
  • :2025石雕厂家推荐排行榜:从产能到质量,这5家凭实力出圈(产能+专利+质量) - 爱采购寻源宝典
  • Obsidian日历插件:重塑你的笔记时间管理体系
  • 33、.NET 应用配置与动态加载全解析
  • 医疗数据血缘追踪漏节点 补自动化工具救回分析
  • 一劳永逸!RWTS-PDFwriter:macOS虚拟打印机完美解决方案
  • edge-tts语音合成WebSocket连接403错误的完整解决方案指南
  • Mobaxterm-Chinese中文版:一站式远程管理终端工具全面解析
  • UniHacker技术解析:跨平台Unity开发环境授权管理方案
  • 2025钢格板厂家推荐排行榜:产能规模与专利技术双维度权威解析 - 爱采购寻源宝典
  • 如何快速部署LocalColabFold:生物信息学研究的完整本地化解决方案
  • 如何在24小时内完成智谱Open-AutoGLM生产环境部署?一线架构师亲授
  • PaddlePaddle镜像支持模型服务降级策略,保障核心GPU业务
  • 广州留学中介哪家强?2025反馈及时度品牌实力榜单揭晓 - 留学品牌推荐官