0 - 非訪問、1 - 障害物(ブロック位置)、2 - 訪問、-1 - 出力、(x、y) - 開始位置の行列で表される迷路を考えてみましょう。私は再帰を使って、最初から何らかの出力までのパスを見つけたいと思っています。どのように再帰を使用して迷路から出る?
int[] x_dir = new int[] { 0, 0, -1, 1 }; // x, x, x-1, x + 1
int[] y_dir = new int[] { -1, 1, 0, 0 }; // y-1, y+1, y, y
bool dfs(int[,] maze, int x, int y, int[] x_dir, int[] y_dir)
{
if (maze[x, y] == -1) { return true; } // output cell marked -1
int i = 0;
while (i < 4 && !dfs(maze, x + x_dir[i], y + y_dir[i], x_dir, y_dir))
{
++i;
}
return (i > 4) ? false : true;
}
は、私は2つの問題を抱えている:私はエッジケース(IndexOutOfRangeException inside maze[x,y]
)とどのようにパスを印刷することを処理する方法がわかりません。 お願いします。
再帰を使用してパスを印刷するにはどうすればよいですか? –