【发布时间】:2016-01-18 22:40:07
【问题描述】:
我有一个Matrix [N][M]。我用-1 表示的障碍物和0 表示的移动空间填充了这个矩阵。我还有一个由-2 代表的人A。这个人要上下左右检查,看看有没有障碍物。如果没有,则增加1,将其放在当前单元格中。完成检查后,转到该单元格的邻居并对其邻居进行相同的检查。
显然,算法从 A 所在的位置开始,并检查我写的上述内容。我的工作是找到一个特定的单元格,让 A 和 B 可以相遇,但路径必须尽可能短。我猜算法应该记住哪些单元格增加了。
- 我应该为这项任务使用某种数据结构吗?
- 而且,算法什么时候必须停止?
【问题讨论】:
-
您可以将矩阵视为一个图形。你的算法是 BFS(如果我理解正确的话)。只需检查您是否已经增加了相邻单元格的值。如果不是 - 将此单元标记为递增并将此邻居放入队列。
-
这个算法的目的是什么?您想找到此人可以到达的所有单元格吗?或者到达某个特定的其他单元格?
-
找到 A 和 B 可以相遇的特定单元格,但路径必须尽可能短。
-
那么有B人吗?哪条路径必须是最短的? A人的路径,B人的路径还是B人和A人的路径之和?
-
你看过bfs:en.wikipedia.org/wiki/Breadth-first_search吗?为什么您认为这种方法对您不起作用?
标签: algorithm matrix graph breadth-first-search