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