java中的回溯DUCU
这段代码导致StackOverflower错误,但我无法确定问题出在哪里java中的回溯DUCU,java,backtracking,recursive-backtracking,Java,Backtracking,Recursive Backtracking,这段代码导致StackOverflower错误,但我无法确定问题出在哪里 public boolean backtracking(int n, ArrayList<Point2D.Double> R, ArrayList<Point2D.Double> S) { ArrayList<Point2D.Double> C = new ArrayList<>(); if (R.isEmpty()) return true; els
public boolean backtracking(int n, ArrayList<Point2D.Double> R, ArrayList<Point2D.Double> S) {
ArrayList<Point2D.Double> C = new ArrayList<>();
if (R.isEmpty()) return true;
else {
for (int i = 0; i <= R.size() - 1; i++) {
Point2D.Double currentPt = R.remove(i);
S.add(currentPt);
Ellipse2D.Double circle = new Ellipse2D.Double(currentPt.x - r, currentPt.y - r, r * 2, r * 2);
for (int j = 0; j <= R.size()-1 ; j++){
if (circle.contains(R.get(j))){
C.add(R.remove(j));
}
}
backtracking(n+1, R, S);
if (!C.isEmpty()) R.addAll(C);
R.add(S.remove(S.size() - 1));
}
}
return false;
}
公共布尔回溯(int n,ArrayList R,ArrayList S){
ArrayList C=新的ArrayList();
如果(R.isEmpty())返回true;
否则{
对于(int i=0;i FYI,i
相当于,并且比更传统,i no不能解决问题,但是thanx!我没有说它能解决问题。事实上,我说它与你所拥有的是等价的。