有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

回溯回溯java中的DUCU

这段代码导致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;
    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;
}

注:此“应”是一种计算覆盖R阵列列表中所有点所需的最小圆数的方法


共 (0) 个答案