news 2026/10/12 22:42:45

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/10/11 13:35:56

34、应用配置与动态加载技术详解

应用配置与动态加载技术详解 1. 单例模式的 ConfigurationLoader 类 在开发过程中,我们常常需要确保某个类只有一个实例,并且提供一个全局访问点。这里我们将 ConfigurationLoader 类定义为单例模式,这意味着: - 创建一个名为 Instance 的属性,该属性引用 Configu…

作者头像 李华
网站建设 2026/10/8 10:14:28

35、应用配置、动态加载与多线程编程知识解析

应用配置、动态加载与多线程编程知识解析 1. 开源软件版本号理解 在开源软件领域,版本号的使用极为广泛且至关重要。虽然版本号看似像彩票号码,但它们遵循一定的约定。了解这些约定有助于我们更轻松地选择开源软件包,并且能让我们更好地理解软件组件。 1.1 版本号构成 以…

作者头像 李华
网站建设 2026/10/8 16:28:40

Open-AutoGLM性能实测曝光:在10个基准任务中击败主流AutoML工具?

第一章&#xff1a;Open-AutoGLM水平如何?Open-AutoGLM 是一个面向自动化自然语言处理任务的开源大模型框架&#xff0c;旨在通过轻量化架构实现高效推理与灵活部署。其设计融合了 GLM 架构的核心思想&#xff0c;并针对边缘计算和低延迟场景进行了深度优化&#xff0c;在多个…

作者头像 李华
网站建设 2026/10/11 23:29:30

免费OpenAI API密钥完整指南:30个可用密钥快速获取

免费OpenAI API密钥完整指南&#xff1a;30个可用密钥快速获取 【免费下载链接】FREE-openai-api-keys collection for free openai keys to use in your projects 项目地址: https://gitcode.com/gh_mirrors/fr/FREE-openai-api-keys 想要零成本体验OpenAI的强大AI功能…

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

PaddlePaddle镜像集成代码静态检查工具,预防GPU资源浪费

PaddlePaddle镜像集成代码静态检查&#xff0c;守护GPU算力的生命线 在一家AI初创公司里&#xff0c;工程师小李又一次看着任务调度系统的日志摇头——他刚提交的训练任务在GPU队列中排了20分钟&#xff0c;启动后不到30秒就因一个拼写错误崩溃了。import padlde&#xff0c;少…

作者头像 李华
网站建设 2026/10/8 16:15:24

mui框架用户反馈系统终极指南:打造完美移动应用体验

mui框架用户反馈系统终极指南&#xff1a;打造完美移动应用体验 【免费下载链接】mui 最接近原生APP体验的高性能框架 项目地址: https://gitcode.com/gh_mirrors/mu/mui 用户体验的隐形痛点&#xff1a;为什么用户不愿意反馈&#xff1f; 在移动应用开发的世界里&…

作者头像 李华