Алгоритм печати на экране через текстовый лабиринт

Для моего назначения C++я в основном пытаюсь выполнить поиск по куску текста в текстовом файле (который передается в мой вектор vec), начиная со второго верхнего символа слева. Это для текстового лабиринта, где моя программа в конце концов должна распечатать символы для пути через него.

Пример лабиринта будет выглядеть следующим образом:

###############
Sbcde####efebyj
####hijk#m#####
#######lmi#####
###############
###############
###############
###############
###############
###############
###############
###############
###############
###############
###############

Где '#' — это непроходимая стена, и вы всегда начинаете слева со второго верхнего символа. Буквенные символы обозначают проходимые квадраты. Выход(ы) ВСЕГДА справа. Лабиринт всегда имеет размер 15x15 в файле maze.text. Буквенные символы повторяются в пределах одного лабиринта, но не непосредственно рядом друг с другом.

Здесь я пытаюсь сделать следующее: если квадрат рядом с текущим имеет алфавитный символ, добавьте его в вектор vecи повторяйте этот процесс, пока не доберусь до конца лабиринта. В конце концов, я должен усложнить это, напечатав на экране несколько путей, которые существуют в некоторых лабиринтах.

До сих пор у меня есть это для самого алгоритма, что, как я знаю, неверно:

    void pathcheck()
{
    if (isalpha(vec.at(x)) && !(find(visited.begin(), visited.end(), (vec.at(x))) != visited.end()) )
    {
        path.push_back(vec.at(x));
        visited.push_back(vec.at(x));
        pathcheck(vec.at(x++));
        pathcheck(vec.at(x--));
        pathcheck(vec.at(x + 16));
        pathcheck(vec.at(x - 16));
    }
}

visited— это мой вектор, отслеживающий посещенные квадраты.

Как бы я обновил это, чтобы оно действительно работало, и в конечном итоге я мог бы управлять более чем одним путем (т.е. если бы было 2 пути, программа печатала бы на экран оба из них)? Я помню, как мне сказали, что мне может понадобиться другой вектор / массив, который отслеживает квадраты, которые я уже посетил / проверил, но тогда как я буду реализовывать это здесь точно?

5
задан Mike 26 November 2012 в 18:02
поделиться