私のC++vec
割り当てでは、基本的に、左側の2番目の上の文字から始まるテキストファイル(ベクターにストリーミングされる)内のテキストのチャンクを検索しようとしています。それはテキスト迷路のためのものであり、私のプログラムは最終的にそれを通るパスの文字を印刷することになっています。
迷路の例は次のようになります。
###############
Sbcde####efebyj
####hijk#m#####
#######lmi#####
###############
###############
###############
###############
###############
###############
###############
###############
###############
###############
###############
ここで、「#」は歩けない壁であり、常に左側の2番目の上の文字から開始します。アルファベット文字は歩きやすい正方形を表します。出口は常に右側にあります。迷路は、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
訪問した正方形を追跡する私のベクトルです。
これを更新して実際に機能させ、最終的に複数のパスを管理できるようにするにはどうすればよいですか(つまり、パスが2つある場合、プログラムは両方のパスを画面に出力します)。すでにアクセス/チェックした正方形を追跡する別のベクトル/配列が必要になる可能性があると言われたことを思い出しますが、それをここで正確に実装するにはどうすればよいですか?