【发布时间】:2017-02-02 13:57:17
【问题描述】:
我正在努力实现一种分而治之的算法,该算法可以找到彼此最接近的两个点以及它们之间的距离。我的最终解决方案找到了正确的答案(与使用蛮力相比),但大约 1/3 的时间会返回分段错误错误。几天来我一直在努力解决这个问题,在这里和那里添加打印语句,但找不到问题。如果有人查看我的代码,我将不胜感激。
【问题讨论】:
-
你的调试器把分段错误放在哪里了?
-
每次使用相同的输入数据还是不同的数据?鉴于该函数是递归的,您可能会用完堆栈空间。尝试增加堆栈正在重新运行导致程序崩溃的数据。
-
@Cedric 刚刚尝试了一个调试器,它说在
for (j=i+1; j<n && (Yprime[j].y-Yprime[i].y) < minSoFar; j++) {发生了分段错误。 @iksemyonov 我使用随机生成的点作为输入。我尝试保持输入大小和种子不变,但分段错误仍然非常随机地发生。 -
另外,增加堆栈大小并没有帮助(无论如何我都在用 N
-
@Lorehead 如果您在谈论 1201ProgramAlarm 的答案,OP 已经评论过它,说它不起作用。无论如何,由于他是在受控环境中测试此代码,因此 X
标签: c++ recursion divide-and-conquer