news 2026/4/16 14:12:48

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 0:20:33

WordPress Markdown编辑器WP-Editor.md:让写作回归纯粹与高效

WordPress Markdown编辑器WP-Editor.md&#xff1a;让写作回归纯粹与高效 【免费下载链接】WP-Editor.md 或许这是一个WordPress中最好&#xff0c;最完美的Markdown编辑器 项目地址: https://gitcode.com/gh_mirrors/wp/WP-Editor.md 还在为WordPress默认编辑器的复杂格…

作者头像 李华
网站建设 2026/4/16 13:07:11

终极指南:在Jupyter中轻松运行C代码的10个技巧

终极指南&#xff1a;在Jupyter中轻松运行C代码的10个技巧 【免费下载链接】jupyter-c-kernel Minimal Jupyter C kernel 项目地址: https://gitcode.com/gh_mirrors/ju/jupyter-c-kernel 你是否想过&#xff0c;将C语言这种系统级编程语言的强大功能&#xff0c;与Jupy…

作者头像 李华
网站建设 2026/4/16 12:20:59

【Open-AutoGLM高效部署秘籍】:资深架构师亲授安装优化技巧

第一章&#xff1a;Open-AutoGLM高效部署全景解析Open-AutoGLM作为新一代自动化语言模型推理框架&#xff0c;专注于在多场景下实现低延迟、高吞吐的模型服务部署。其核心设计理念是解耦模型加载、推理调度与资源管理&#xff0c;支持从边缘设备到云端集群的灵活部署模式。部署…

作者头像 李华
网站建设 2026/4/16 13:07:35

39、深入理解关系型数据库数据

深入理解关系型数据库数据 1. 数据库关系 关系型数据库中的关系功能强大,但也会使情况变得极为复杂。当拆分表并在表之间创建关系时,就是在对数据进行规范化处理。数据库规范化是一种设计关系型数据库表的技术,旨在最小化信息重复,并防止数据库出现某些逻辑或结构问题,即…

作者头像 李华
网站建设 2026/4/16 10:04:32

40、关系型数据库数据操作:ADO.NET 与 Dataset Designer 实战

关系型数据库数据操作:ADO.NET 与 Dataset Designer 实战 在数据库应用开发中,如何高效地与关系型数据库进行交互是一个关键问题。本文将详细介绍使用 ADO.NET 直接访问数据库,以及利用 Visual Basic Express 提供的 Dataset Designer 来简化数据库应用开发的方法。 1. 使…

作者头像 李华
网站建设 2026/4/15 23:05:14

Obsidian智能写作助手:重新定义知识创作效率

在信息爆炸的时代&#xff0c;如何让AI成为您知识管理的最佳搭档&#xff1f;Obsidian Text Generator插件正是这样一款革命性工具&#xff0c;它将先进的自然语言处理技术与个人知识库完美融合&#xff0c;为内容创作者、学术研究者和知识工作者提供前所未有的写作效率提升。 …

作者头像 李华