news 2026/4/23 18:40:05

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/23 8:47:07

Edge TTS完整使用教程:无需Windows系统即可获得微软级语音合成

还在为跨平台应用缺乏高质量语音功能而苦恼吗&#xff1f;想要在任何操作系统上都能使用微软级别的语音合成服务吗&#xff1f;Edge TTS正是你需要的完美解决方案&#xff01;这个强大的Python库让你能够直接调用微软Edge的在线文本转语音服务&#xff0c;彻底摆脱了操作系统限…

作者头像 李华
网站建设 2026/4/23 12:23:57

MATLAB图表LaTeX转换终极指南:matlab2tikz让学术图表完美呈现

MATLAB图表LaTeX转换终极指南&#xff1a;matlab2tikz让学术图表完美呈现 【免费下载链接】matlab2tikz This program converts MATLAB/Octave figures to TikZ/pgfplots figures for smooth integration into LaTeX. 项目地址: https://gitcode.com/gh_mirrors/ma/matlab2ti…

作者头像 李华
网站建设 2026/4/23 10:47:54

从零实现基于T触发器的同步计数器电路

从T触发器到同步计数器&#xff1a;手把手构建一个4位二进制计数器你有没有想过&#xff0c;CPU里的时钟是怎么“数”出时间的&#xff1f;或者FPGA中那些自动递增的状态机背后到底发生了什么&#xff1f;答案其实藏在一个最基础的电路结构里——计数器。而今天我们要做的&…

作者头像 李华
网站建设 2026/4/23 10:48:42

突破传统限制:Craft.js如何重新定义React拖拽编辑器开发

突破传统限制&#xff1a;Craft.js如何重新定义React拖拽编辑器开发 【免费下载链接】craft.js &#x1f680; A React Framework for building extensible drag and drop page editors 项目地址: https://gitcode.com/gh_mirrors/cr/craft.js 在当今前端开发领域&#…

作者头像 李华
网站建设 2026/4/23 10:48:21

像素字体创意革命:3步重塑你的数字视觉语言

像素字体创意革命&#xff1a;3步重塑你的数字视觉语言 【免费下载链接】fusion-pixel-font 开源像素字体。支持 8、10 和 12 像素。 项目地址: https://gitcode.com/gh_mirrors/fu/fusion-pixel-font 在数字设计的世界里&#xff0c;像素字体正经历着一场令人振奋的复兴…

作者头像 李华
网站建设 2026/4/23 10:48:18

Qwen-Image-Edit-Rapid-AIO:开源AI图像编辑的终极解决方案

Qwen-Image-Edit-Rapid-AIO&#xff1a;开源AI图像编辑的终极解决方案 【免费下载链接】Qwen-Image-Edit-Rapid-AIO 项目地址: https://ai.gitcode.com/hf_mirrors/Phr00t/Qwen-Image-Edit-Rapid-AIO 在2025年的AI图像创作领域&#xff0c;Qwen-Image-Edit-Rapid-AIO以…

作者头像 李华