【发布时间】:2012-06-23 20:39:27
【问题描述】:
假设一个人想要搜索满足某个等式的整数对 x 和 y a,例如(不由自主地)7 x^2 + x y - 3 y^2 = 5
(我知道有非常有效的方法可以找到这样的二次方程的整数解;但这与当前问题的目的无关。)
显而易见的方法是使用简单的双循环“for x = -max to max; for y = -max to max { blah}” 但是为了让搜索可以停止和恢复,更方便的方法,如图x 和 y 的可能整数作为平面中点的方格,是从原点向外绕“方螺旋”工作,在(例如)右上角开始和停止。
所以基本上,我要求一个简单而合理的“伪代码”用于循环分别在 (m, m) 和 (n, n) 点开始和停止这个过程。
为了额外的荣誉,如果读者倾向于,我建议如果 x 之一可以被假定为非负数,或者如果两者都可以被假定为非负数,我建议也提供循环。这可能更容易一些,尤其是第二个。
我自己可以毫不费力地提出这个问题,但我有兴趣看到其他人的巧妙想法。
对于那些喜欢用白板折磨候选人的可怕面试官来说,这将是一个很好的“建设性”面试挑战;-)
【问题讨论】:
-
如果您已经有了解决方案,那么这不是“您面临的实际问题”(请参阅常见问题解答)。如果您想对您的解决方案进行评论,更好的论坛是codereview.stackexchange.com。
-
@OliCharlesworth It's ok to ask questions you already know an answer to。甚至还有 badge 奖励回答您自己的问题。
-
@Juhana:是的。但这似乎是“让我们比较解决方案!”场景,其实不太合适。无论如何,很容易找到这个问题的重复项(即以螺旋方式迭代二维数组),例如stackoverflow.com/questions/945265/2d-array-in-spiral-order 或 stackoverflow.com/questions/8979214/….
-
@Juhana:我期待这种评论是关于一个实际的自我回答,而不是一个甚至不是问题的问题。我们的自我回答格式与 Oli 所说的有所不同。
标签: arrays