0
私は迷路を解決するために必要な動きに注目するために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列の2D正方行列であるためです。
'g.neighbors(頂点)で停止することができます知っているので、あなたはおそらく、DFSがendVertexが見つかったかどうかを返すようにしたい、' - 'G'が定義されていません。コード内では、推測作業が必要です。もっと効率的で効果的なヘルプを投稿するには[mcve] – c0der