使用计数器暂停执行以显示单独的处理步骤,是否可以逐步实现道格拉斯peucker line简化算法? 我不确定是否有可能。如果是这样,那么特定的数据结构 建议这样做。我只看到了递归解决方案,我不确定这是否可行?
答案 0 :(得分:1)
是的,这当然是可能的。如果您最感兴趣的是查看算法完成后所采取的步骤,那么最简单的方法就是在算法的每一步保留一份点列表的副本。算法完成后,您可以打印出中间步骤列表。
例如,如果要将点存储在列表中,则可以在每次迭代时复制列表:
class DouglasPeucker {
private List<Point[]> steps = new ArrayList<>();
public Point[] compute(Point[] points) {
steps.add(points.clone());
// perform normal recursive steps
}
public void printSteps() {
for (Point[] points: steps) {
...
}
}
}
请注意,这是数组的浅表副本 - 即未克隆点对象。如果点对象是不可变的(它们可能应该是),这将正常工作。
或者,如果您想在每个点停止并检查变量的状态,那么您应该在适当的位置使用带断点的交互式调试器。