私のプログラムは、ファイルからの入力として char 配列を取ります。配列は次のようになります。
"#########",
"# # #",
"# ## # #",
"# # #",
"### # ###",
"# # # #",
"# # #####",
"# # #",
"#########",
[1,1] から [width - 1,height - 1] で終わるこの迷路を解くために、DFS と BFS を実装しています。
迷路を表すツリーを作成し、各アルゴリズムを使用してツリーをトラバースすることを考えました。
各行から開始し、空のセルをスキャンします。各空のセルで、その右、左、および下にあるすべてのセルがそのセルの子になります。次のようになります。
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
if (isEmpty(maze[i][j]))
{
putChildren(maze[i-1][j], maze[i][j+1], maze[i+1][j]);
//this will check if it's a wall first
}
}
このようにツリーを実装し、それを使用して DFS と BFS でツリーをトラバースすることは実行可能な戦術ですか、それとも別の方法で行う必要がありますか?