仅仅因为这是练习递归的练习,我的教授给出了代码来找到迷宫中所有解决方案的坐标。这是有意义的,我将所有这些解决方案添加到ArrayList solutions
我现在想要在递归之外创建一个for
循环,并遍历列表,找到最小的坐标长度,并更新因此,就像你会找到integer
中最小的ArrayList
一样。
但是,它将空ArrayList<Coord>s
添加到ArrayList solutions
,因此,当我尝试获取第一个元素时,它会与空元素进行比较,因此它找不到最短的长度。有谁知道如何获得解决方案,并将它们添加到我的ArrayList
??
这是给我的递归代码:
else{
ArrayList<ArrayList<Coord>> solutions = new ArrayList<Array List<Coord>>();
for(int i=0; i<directions.length; i++){
Coord nextSpot = currentSpot.addTo(directions[i]);e
if(nextSpot.validSpot(maze))
if(!newPath.contains(nextSpot)){
ArrayList<Coord> solution = //The recursive call
solve(newPath,nextSpot,goal,maze);
if(solution != null)
{
solutions.add(solution);
}
}//ifs
}//for
这是我尝试找到最小路径的地方:
ArrayList<Coord> smallestPath = (ArrayList<Coord>)solutions.get(0);
ArrayList currentPath = new ArrayList();
for(int i = 0; i < solutions.size(); i++){
currentPath = (ArrayList)solutions.get(i);
if(currentPath.size() < smallestPath.size()){
smallestPath = currentPath;
}
System.out.println("currentPath is : " + currentPath);
}
return smallestPath;
}//else (recursive case)