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

时间:2018-08-29 18:13:05

标签: c++ matrix graph shortest-path

我在本地比赛中看到了这个问题,我正在尝试解决它,

我得到一个矩阵,其中包含“ r ”行和“ c ”列。然后给我' Q '单元格,

我的任务是找到最短的路径:从左上角'(0,0)'开始,到右下角'(row-1,column- 1)”并遍历所有“ Q ”单元格。我可以左右,左右移动。

“蛮力”是不可行的(我只有1秒的CPU时间,最多只能给我50列和行)。

这是示例输入:

6 3   
3        
0 1    
4 2  
5 2 

以下是示例输出:

7

我正在考虑某种BFS,但是我不知道如何将其应用于此特定问题。

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

1 个答案:

答案 0 :(得分: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