我有一个名为 Program 的类,它包含一个网格。它有两个方法 possi() 保存所有可能的进入网格的方法,并保存 ArrayList possi 和所有可能的入口点和方法solve ,它实际进入并使用提供的入口点进入网格。我已经使用 dfs 和 bfs 完成了 mazesolvers,但我的问题是,solve 实际上基本上改变了网格,通常 bfs 和 dfs 不考虑被改变的迷宫。这就是我不使用它们的原因。我想通过切入点和进一步点的所有可能性。我的第一级入口点存储在 lev1.possi 中,我可以循环访问它们。然后我必须创建一个网格的新实例,因为solve会改变结构并应用solve然后从那个新对象返回新的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
}