对于我的C++作业,我基本上是在尝试搜索一个文本文件中的一段文本(该文本已流式传输到我的向量vec
),从左侧第二个字符开始。这是为了一个文本迷宫,最终我的程序应该打印出通过它的路径的字符。
一个迷宫的例子可能是这样的:
###############
Sbcde####efebyj
####hijk#m#####
#######lmi#####
###############
###############
###############
###############
###############
###############
###############
###############
###############
###############
###############
在迷宫中,'#'代表不可行走的墙壁,你总是从左边的第二个字符开始。字母字符代表可行走的方块。出口始终在右侧。迷宫在maze.text文件中始终为15x15大小。字母字符在同一个迷宫中可能会重复出现,但不会直接相邻。
我的目标是:如果当前位置旁边的方块有字母字符,则将其添加到向量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
是我用来跟踪已访问的方格的向量。
我该如何更新它以使其实际起作用,并最终能够管理多条路径(即如果有两条路径,程序将在屏幕上打印这两条路径)?我记得有人告诉过我可能需要另一个向量/数组来跟踪我已经访问/检查过的方格,但是在这里我应该如何实现呢?