Моя программа принимает массив символов в качестве входных данных из файла. Массив выглядит следующим образом:Реализация дерева для лабиринта для использования в DFS, BFS
"#########",
"# # #",
"# ## # #",
"# # #",
"### # ###",
"# # # #",
"# # #####",
"# # #",
"#########",
Я реализую DFS и BFS, чтобы решить этот лабиринт с, начиная с [1,1] и кончая [ширину - 1, высоту - 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, или я я должен идти на это по-другому?
Какой язык вы используете? –
C++ (я его отредактирую) – Powerbyte