【发布时间】:2014-10-07 22:51:33
【问题描述】:
如果给定坐标系中的 100 个点,我必须找出这些顶点中是否存在直角三角形。 有没有一种方法可以检测这些顶点之间的直角三角形,而不必选择所有 3 个顶点对然后在它们上应用毕达哥拉斯定理? 有没有更好的算法来解决这个问题? 谢谢你的帮助。 :)
【问题讨论】:
-
您可以找到所有点对 (p1 - p2) 的向量,然后检查其中 2 个向量(具有一个共同端点)的点积结果为零。
-
但是如果我有 100 分,那么获取 2 分的每一个可能的子集不会是一项更耗时的任务吗??
-
100 分并不多。实现朴素算法就好了,反正不会花太长时间。
-
100 个点生成 9900 个向量。对于每个向量,您最多需要考虑 98 个其他向量。总共不到 1,000,000 个点积。如果你很聪明,你可以用少于 500,000 个点积来做到这一点。这是完全可行的。
-
你不会碰巧只在二维中工作吧?