Как использовать BFS, чтобы найти кратчайший путь в лабиринте 6x6 сетки C # - PullRequest
0 голосов
/ 15 мая 2018

Я видел, что подобный вопрос задавался здесь много раз, я пытался использовать их, но не мог понять, как это должно работать в моем случае.Пожалуйста, помогите мне разобраться, как решить эту проблему.

Итак, у меня есть чтение по сетке лабиринта 6 x 6 из текстового файла, и я хочу найти кратчайший путь от начала до конца, который я нашел в Интернетеэто должно быть сделано с использованием алгоритма BFS, однако IDK, как реализовать это.Вот мой код.

class Program
{    
    static char dottozero(char a)
    {
        a = 'O';
        return a;
    }

    static void Main(string[] args)
    {
        char[,] Tablero = new char[6, 6];    
        string[] lines = File.ReadAllLines("maze.txt");

        for (int i = 0; i < lines.Length; i++)
        {
            for (int j = 0; j < lines[i].Length; j++)
            {
                Tablero[i, j] = lines[i][j];

                if ((int)Tablero[i, j] == (int)'.' || (int)Tablero[i, j] == (int)'B' || 
                    (int)Tablero[i, j] == (int)'E')
                {
                        Tablero[i, j] = dottozero(Tablero[i, j]);
                }

                Console.Write(Tablero[i, j]);
            }

            Console.WriteLine();
        }

        Console.ReadLine();    
    }
}

И мой лабиринт выглядит так: «X» - это стены, точки - это свободная дорога, «B» - это начальная точка, а «E» - конечная точка

Bxxxxx
.....x
x.xx.x
x....x
x.xxxx
x....E

пройденный путь должен быть напечатан как O вместо точек, поэтому я, если bfs является правильным алгоритмом для моего случая, вывод должен быть таким?

Oxxxxx
OO...x
xOxx.x
xO...x
xOxxxx
xOOOOO

1 Ответ

0 голосов
/ 15 мая 2018

Ваш код не делает DFS .Все, что он делает - это заменяет все символы, кроме x на o, поэтому ожидаемый результат для данного ввода:

[o, x, x, x, x, x][о, о, о, о, о, х][х, о, х, х, о, х][х, о, о, о, о, х][х, о, х, х, х, х][х, о, о, о, о, о]

...