我的程序从文件中获取一个 char 数组作为输入。该数组如下所示:
"#########",
"# # #",
"# ## # #",
"# # #",
"### # ###",
"# # # #",
"# # #####",
"# # #",
"#########",
我正在实现深度优先搜索和广度优先搜索来解决这个迷宫问题,从[1,1]开始,到[width - 1,height - 1]结束。
我考虑创建一个代表迷宫的树,然后使用每个算法分别遍历该树。
我将从每一行开始扫描空单元格,在每个空单元格中,其右侧、左侧和下方的每个单元格都将成为该单元格的子节点。它看起来像这样:
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遍历树是否是可行的策略?还是我应该采用其他方法?