【发布时间】:2015-02-19 19:44:53
【问题描述】:
所以我正在使用“课程”。课程充满坐标。每个坐标都有允许移动的属性(#left #right #up #down)。课程是建立在一个坐标系上的,所以左边是 x-1,右边是 x+1,向上是 y-1,向下是 y+1。
我的目标是获得每个可达坐标的最短距离。 距离由从起点(参数中提供的路线的起点坐标)的移动次数定义。所以从 (0,0) 到 (1,2) 的距离将是 3. 1 右和 2 下 我最初使用递归解决了这个问题:
答案:与其尽可能深入地遍历每个路径,不如使用数组一次遍历每个差异内的每个路径
【问题讨论】:
-
你遇到了什么错误?
-
您应该更正缩进。这可能表明第二部分中有一个额外的
end。此外,对读者进行格式化是一种礼貌,以便无需水平滚动即可阅读代码(即,将长语句分成多行)。 -
@IVlad 我收到 Queue.new() 的名称错误,我不确定如何修复该部分。我也相信,一旦我修复了这个错误,它就不会起作用,因为我不知道正确计算动作
-
However, this recursive algorithm takes too long to go through the large courses- 请注意,深度优先搜索的复杂性和广度优先搜索的复杂性是相同的。如果这是您递归搜索的唯一问题,那么您不太可能仅通过更改为 BFS 来解决它。 -
请定义“可达坐标”的含义。我猜这与无向图有关,如果两个节点(坐标)之间的距离(适当定义)为
1,则它们通过链接连接。另外,您说您想要“每个可达坐标的最短距离”。除了定义“距离”之外,您还需要指定确定每个坐标的距离的位置。也许您的意思是每对相互“可达”的坐标之间的最短距离。对我来说,这听起来越来越像是一个最短路径问题。
标签: ruby algorithm recursion queue breadth-first-search