グリッドを保持する Program というクラスがあります。グリッドに入ることができるすべての可能な方法を保存し、ArrayList possi をすべての可能なエントリ ポイントと共に保存する 2 つのメソッド possi() と、提供されたエントリ ポイントでグリッドに実際に出入りするメソッド solve があります。私はdfsとbfsを使用してmazesolversを実行しましたが、私の問題は、ソルブが実際にグリッドを大幅に変更することです。通常、bfsとdfsは、変更された迷路を考慮していません。それが私がそれらを使用していない理由です。エントリーポイントとさらなるポイントのすべての可能性を乗り越えたいです。エントリ ポイントの最初のレベルは lev1.possi に格納されており、それらをループできます。次に、ソルブが構造を変更してソルブを適用し、その新しいオブジェクトから新しいポッシを返すため、グリッドの新しいインスタンスを作成する必要があります。基本的に、変更ごとに新しいオブジェクトを作成しています。
Program lev1 = new Program();//initializes grid randomly
lev1.possi();//calculates entry points and stores in possi
ArrayList<Program> lev = new ArrayList<Program>();//stores all possible objects
for (int i = 0; i < lev1.possi.size(); i++)//loops through all entry points
{
Program pick = new Program(lev1.grid.clone());//makes a new object
lev.add(pick);
lev.get(i).solve(lev1.possi.get(i));//changes the new object
lev.get(i).possi();//calculates further points to go through
}