Q矩阵单元之间的最短路径

问题描述 投票:0回答:1

我在当地的比赛中看到了这个问题,我正试图解决它,

给我一个带'r'行和'c'列的矩阵。然后我给了'Q'细胞,

我的任务是找到最短的路径:从左上角'(0,0)'开始,在右下角'(第1行,第1列)'结束,并遍历所有'Q'单元格。我可以向右,向左,向上和向下移动。

暴力不可用(我只有1秒的CPU时间,最多可以给出50列和行)。

这是一个示例输入:

6 3   
3        
0 1    
4 2  
5 2 

这是示例输出:

7

我正在考虑某种BFS,但我不知道如何将它应用于这个特定的问题。

任何帮助或建议将不胜感激!

c++ matrix graph shortest-path
1个回答
0
投票

计算每个Q与起点和终点之间的最短路径。创建具有这些距离的图形。

由于您只能正交移动,因此两点之间的最短距离是其坐标之间的绝对差值之和。

选择算法以访问距离图中的所有节点。 Possible starting point底线是,这已成为“旅行商问题”,您需要决定哪种算法最适合您。

如果我理解你的输入,距离图就像这样

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
© www.soinside.com 2019 - 2024. All rights reserved.