C++ Q矩阵单元间的最短路径
我在一次本地比赛中看到了这个问题,我正在努力解决它 我得到了一个包含“r”行和“c”列的矩阵。然后给我“Q”单元格 我的任务是找到最短路径:从左上角“(0,0)”开始,到右下角“(第1行,第1列)”结束,然后遍历所有“Q”单元格。我可以左右上下移动 暴力是不行的(我只有1秒的CPU时间,最多可以给我50列和行) 以下是一个示例输入:C++ Q矩阵单元间的最短路径,c++,matrix,graph,shortest-path,C++,Matrix,Graph,Shortest Path,我在一次本地比赛中看到了这个问题,我正在努力解决它 我得到了一个包含“r”行和“c”列的矩阵。然后给我“Q”单元格 我的任务是找到最短路径:从左上角“(0,0)”开始,到右下角“(第1行,第1列)”结束,然后遍历所有“Q”单元格。我可以左右上下移动 暴力是不行的(我只有1秒的CPU时间,最多可以给我50列和行) 以下是一个示例输入: 6 3 3 0 1 4 2 5 2 以下是示例输出: 7 我正在考虑某种BFS,但我不知道如何将其应用于这个具体问题 任何帮
6 3
3
0 1
4 2
5 2
以下是示例输出:
7
我正在考虑某种BFS,但我不知道如何将其应用于这个具体问题
任何帮助或建议都将不胜感激 计算每个Q点与起点和终点之间的最短路径。创建具有这些距离的图形 由于只能正交移动,两点之间的最短距离是其坐标之间绝对差的总和 选择访问距离图中所有节点的算法。底线是,这已成为“旅行推销员问题”,您需要决定许多可用算法中哪一种最适合您 如果我理解您的输入,距离图如下所示
Locations
B 0 0
Q1 0 1
Q2 4 2
Q3 5 2
E 3 3
Distances
B 0 1 6 7 6
Q1 0 0 5 6 5
Q2 0 0 0 1 2
Q3 0 0 0 0 3
E 0 0 0 0 0