【发布时间】:2021-05-13 16:02:33
【问题描述】:
我正在尝试编写一个 javascript 函数,该函数在玩家无法沿对角线移动的棋盘(15x15 网格)上找到长度为 N 的所有可能路线。我能够想出一个非常简单的递归解决方案,但我怀疑它非常未优化。
代码如下:
search(n, u, v) {
if (n == 0 || isWall(u, v))
return;
board[v][u] = 2;
search(n - 1, u, v - 1);
search(n - 1, u + 1, v);
search(n - 1, u, v + 1);
search(n - 1, u - 1, v);
return;
}
board 是一个包含棋盘数据的二维数组。空闲空间、墙和可达空间分别用 0、1 和 2 表示。
Here's an example of what is looks like given N=6
编辑:如下所述,我试图在 N 或更少的移动中找到所有可到达的单元格。
【问题讨论】:
-
从技术上讲,您在这里写的内容不是找到“所有可能的长度为 N 的路线”,而是“在 N 或更少的移动中所有可到达的单元格" 这要容易得多。你真正想要哪个?
-
是的,可以找到所有路线,但通常迭代太多。可以计算路线或显示在 n 次移动中可以到达的位置。
-
对于每个可到达的单元格,您可以使用 A* 搜索算法找到到该单元格的 最短 路线。这将为您提供通往每个单元格的路线,但不会是所有路线。够了吗?
标签: javascript algorithm path-finding