【发布时间】:2017-11-16 16:48:27
【问题描述】:
我使用了 DFS 算法来记录解决迷宫所需的动作。有一个startVertex 和一个endVertex。我的代码如下:
private void DFS(int vertex, boolean visited[], LinkedList<Move> output) {
visited[vertex] = true;
for (int neighbor: g.neighbors(vertex)) {
if (visited[neighbor] != true) {
if (neighbor == vertex + 1)
output.add(Move.RIGHT);
else if (neighbor == vertex - 1)
output.add(Move.LEFT);
else if (neighbor == vertex + Math.sqrt(g.size()))
output.add(Move.DOWN);
else
output.add(Move.UP);
if (neighbor == endVertex)
break;
DFS(neighbor, visited, output);
}
else {
output.removeLast();
}
}
}
我正在使用removeLast() 函数,当所有周围的邻居都已被探索过,因此那个特定的顶点仍然没有用处。但我认为错误仅存在于此。
图形g 的大小是n*n,因为原始迷宫是一个n 行n 列的二维方阵。
【问题讨论】:
-
g.neighbors(vertex)-g没有在代码中定义,所以需要猜测。如需更高效的帮助,请发帖minimal reproducible example
标签: java algorithm graph depth-first-search maze