首页 > 其他分享 >重新安排行程

重新安排行程

时间:2024-05-03 12:12:26浏览次数:33  
标签:return target 行程 重新安排 vector result 机场 targets

重新安排行程

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,因为只需要找到一个行程
        //路径长度等于机票数量+1
		if(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;
     }
 };

标签:return,target,行程,重新安排,vector,result,机场,targets
From: https://www.cnblogs.com/perngfey-note/p/18171078

相关文章

  • Linux 下以其他用户身份运行程序—— su、sudo、runuser
    转自:https://blog.csdn.net/u011250186/article/details/106335028/本文综合分析了Linux系统下,如何使用runuser命令、su命令和sudo命令以其他用户身份来运行程序,以及这三个命令的运行效率比较。 一、su命令临时切换用户身份SU:(Switchuser切换用户),可让一个普通用户切换为......
  • 30天【代码随想录算法训练营34期】第七章 回溯算法part06 (● 332.重新安排行程 ● 51
    332.重新安排行程木有看懂,没视频所以也没看懂51.N皇后自己写出来还是有难度的classSolution:defsolveNQueens(self,n:int)->List[List[str]]:result=[]#存储最终结果的二维字符串数组chessboard=['.'*nfor_inrange(n)]#初始化......
  • 大理丽江行程
    大理丽江行程5.1日(大理)5.1-5.3入住苍洱有花民宿(问问老板新店名字建议去住新店就在隔壁打电话给老板有来高铁站接你们的服务)19:00到达大理20:00左右去吃三文鱼火锅(有金樽鱼就点金樽鱼不需要预约人均100左右)吃完饭可以去渔家女雕像散散步(扫码骑电动车1km左右)22:00左......
  • 运行程序时出现LeftMenu.ocx未注册或找不到控件问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个LeftMenu.ocx文件(挑选合适的版本文件)把它放入......
  • 运行程序时出现mci32.ocx未注册或控件找不到问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个mci32.ocx文件(挑选合适的版本文件)把它放入到......
  • 运行程序时弹出MovingChar.ocx未注册或控件丢失问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个MovingChar.ocx文件(挑选合适的版本文件)把它放......
  • 运行程序出现msadodc.ocx未注册控件无法找到问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个msadodc.ocx文件(挑选合适的版本文件)把它放入......
  • 运行程序时出现mschrt20.ocx未注册找不到控件问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个mschrt20.ocx文件(挑选合适的版本文件)把它放入......
  • 运行程序出现hhctrl.ocx未注册或缺少控件问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个hhctrl.ocx文件(挑选合适的版本文件)把它放入到......
  • 运行程序出现hmButton.ocx未注册或找不到控件问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个hmButton.ocx文件(挑选合适的版本文件)把它放入......