对于我的“ 坚固” C/坚固” 任务, 我基本上尝试从左边第二顶字符开始, 在文本文件( 流到我的矢量 < code> vec < /code > ) 中搜索一大块文本文件( 流到我的矢量 < code> vec < /code > ) 。 它用于文字迷宫, 我的程序最后应该打印出路径的字符 。
迷宫的例子如下:
###############
Sbcde####efebyj
####hijk#m#####
#######lmi#####
###############
###############
###############
###############
###############
###############
###############
###############
###############
###############
###############
# 是一个无法行走的墙壁, 您总是从左侧的第二个顶端字符开始。 字母字符代表可行的方形。 退出是右边的 ALWAYS。 迷宫在迷宫. text 文件中总是有 15x15 大小的大小。 字母字符重复在同一迷宫中, 但不直接相邻 。
我试图在这里做的是:如果当前方形旁边的方形有一个字母字母字符, 将其添加到矢量 < code> 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
是我的矢量跟踪所访问的方形。
我该如何更新它才能真正运作呢?最终这样我才能管理不止一条路径(即如果有两条路径,程序会打印在屏幕上 )? 我记得有人告诉我,我可能需要另一个矢量/阵列来记录我已经访问过/检查过的方形,但是我怎样才能在这里准确执行呢?