重新安排行程

news/2024/10/13 4:18:43

重新安排行程

leetcode 332

本题题意为:给定一个n个点m条边的图,从指定的顶点出发,经过所有的边恰好一次,使得路径的字典序最小。

如何处理死循环:及时删除目的机场,利用回溯的终止条件,找到一个合理的行程即可。

含字典序的映射关系:一个机场映射多个机场,且机场之间依靠字典序排序,利用

unordered_map<string, map<string,int>>targets
//unordered_map<出发机场,map<到达机场,航班次数>>
//利用int型的航班次数记录,通过增减来标记机票是否使用过。

整个题目的树形结构如图。

完整代码为:

 class Solution{private://记录出发机场,到达机场还有航班次数的映射关系unordered_map<string,map<string,int>>targets;bool backtrack(int ticketsNum, vector<string>& result){//返回值类型为bool,因为只需要找到一个行程//路径长度等于机票数量+1if(result.size()==ticketsNum+1){return true;}//引用&target,单纯复制的话就无法记录结果for(auto& target:targets[result[result.size()-1]]){if(target.second > 0){//判断是否还有机票result.push_back(target.first);target.second--;if(backtrack(ticketsNum, result)) return true;result.pop_back();target.second++;}}return false;}public:vector<string> findItinerary(vector<vector<string>>& tickets){tragets.clear();vector<string> result;for(const auto& vec:tickets){targets[vec[0]][vec[1]]++;//记录映射关系}result.push_back("JFK");backtrack(tickets.size(),result);return result;}};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/27097.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

详解csrf(跨站请求伪造)

1.什么是csrf (csrf攻击原理)?用户正常访问A网站,A网站设置cookie被用户浏览器保存 用户不关闭浏览器,直接访问恶意网站,该恶意网站内隐藏式内嵌了A网站接口的请求链接 触发该请求链接,自动携带浏览器保存的cookie,请求成功。2.涉及的基础知识 我们先梳理下上面所涉及的一些基…

python教程1:环境安装+代码编辑器安装

1、环境安装 打开官⽹ https://www.python.org/downloads/windows/ 下载中 下载后执⾏,点击下⼀步安装就⾏,注意选择添加Python到当前⽤户环境变量2、代码编辑器安装下载地址:https://www.jetbrains.com/pycharm/download 选择Professional 专业版最后破解激活,有万能的淘宝…

整合文本和知识图谱嵌入提升RAG的性能

我们以前的文章中介绍过将知识图谱与RAG结合的示例,在本篇文章中我们将文本和知识图谱结合,来提升我们RAG的性能https://avoid.overfit.cn/post/5782ca7c4695427b8c0299ad0887c564

[题解]ABC337E Bad Juice

ABC337E Bad Juice 一开始的想法如下:就是利用二分法,对于一个区间\([l,r]\),分成\([l,mid-1],[mid,r-1]\)两部分,各找两个朋友喝,右边还空出一个\(r\),如果前面两个朋友都没中毒,那说明\(r\)这瓶有毒。 但仔细一想,我们发现\([1,n)\)的瓶子中任意一个我们分出的区间\(…

Unity 热更--AssetBundle学习笔记 1.0【AB包资源加载工具类的实现】

本文介绍AB包资源加载的6种方式,封装实现成单例工具类,方便在开发中进行调用。工具类封装 通过上文中对AB包加载API的了解和简单使用,对AB包资源加载的几种方法进行封装,将其写入单例类中,如代码展示。 确保每个AB资源包只加载一次: 在LoadAssetBundleManager 单例工具类…

pycnblog的使用

功能一键拖拽上传 默认“未发布”,可选择直接发布 重复上传,提示是否更新博客环境 python3是需要python环境的,python的安装自己去百度一下 pycnblog的使用git clone git@github.com:dongfanger/pycnblog.gitpip install pyyaml注意 博客园6.21更新,MetaWeblog现在不支持密…

Windows中Redis怎么设置密码

Windows中Redis怎么设置密码优秀不够,你是否无可替代软件测试交流QQ群:721256703,期待你的加入!! 欢迎关注我的微信公众号:软件测试君