我正在尝试解决一个问题,该问题找到了国际象棋问题的有效解决方案的数量,并且在打印代码时,它打印出92个对象的PartialSolution数组,这是正确的解决方案。这是递归完成的,我需要将这些数组添加到数组列表中,但我无法弄清楚如何。 这是我的代码:
public ArrayList<PartialSolution> solve(PartialSolution sol ){
ArrayList<PartialSolution> solutions = new ArrayList<PartialSolution>();
int exam = sol.examine();
if(exam == PartialSolution.accept){
solutions.add(sol);
}
else if(exam != PartialSolution.abandon){
for(PartialSolution p : sol.extend()){
solve(p);
}
}
return solutions;
}
答案 0 :(得分:0)
在类中定义变量并将列表添加到该列表而不是print。 或者让你的solve方法将第二个参数作为列表并将返回类型从void更改为list。对于第一个调用,给它一个空列表,并在每个递归调用中传递该列表。最后返回该列表
答案 1 :(得分:0)
如果您需要ArrayList来存储解决方案以供以后使用,那么您应该使用以下方法创建列表:
static ArrayList<PartialSolution> x = new ArrayList<PartialSolution>();
然后在打印sol时将解决方案添加到列表中。