我在本地比赛中看到了这个问题,我正在尝试解决它,
我得到一个矩阵,其中包含“ r ”行和“ c ”列。然后给我' Q '单元格,
我的任务是找到最短的路径:从左上角'(0,0)'开始,到右下角'(row-1,column- 1)”并遍历所有“ Q ”单元格。我可以左右,左右移动。
“蛮力”是不可行的(我只有1秒的CPU时间,最多只能给我50列和行)。
这是示例输入:
6 3
3
0 1
4 2
5 2
以下是示例输出:
7
我正在考虑某种BFS,但是我不知道如何将其应用于此特定问题。
任何帮助或建议将不胜感激!
答案 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