对于我的C++作业,我基本上是在尝试vec
从左侧第二个顶部字符开始搜索文本文件(流式传输到我的 vector )中的一大块文本。这是一个文本迷宫,我的程序最终应该打印出穿过它的路径的字符。
迷宫的一个例子是:
###############
Sbcde####efebyj
####hijk#m#####
#######lmi#####
###############
###############
###############
###############
###############
###############
###############
###############
###############
###############
###############
其中“#”是一堵无法行走的墙,您总是从左侧第二个顶部字符开始。字母字符代表可步行的方块。出口总是在右边。在 maze.text 文件中,迷宫始终为 15x15 大小。字母字符在同一个迷宫中重复,但不直接相邻。
我在这里要做的是:如果当前方块旁边的方块有字母字符,则将其添加到 vectorvec
中,然后重复此过程,直到走到迷宫的尽头。最终,我应该通过将某些迷宫中存在的多条路径打印到屏幕上来使这变得更加复杂。
到目前为止,我有这个算法本身,我知道这是错误的:
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 个路径,程序将同时打印到屏幕上)?我记得有人告诉我可能需要另一个向量/数组来跟踪我已经访问/检查过的正方形,但是我将如何在这里实现呢?