微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在给定n点的平面上求平方

如何解决在给定n点的平面上求平方

d[i][j] = distances between points i and j。我们对一个count(i, j)可以尽快返回通过使用point i和绘制的平方数的函数感兴趣j

基本上,count(i, j)必须找到两个点x,并y使得d[i][j] = d[x][y]和检查,如果这4个点真正定义一个正方形。

您可以使用哈希表O(n^2)平均解决该问题。让H[x] = list of all points (p, q) that have d[p][q] = x

现在,对于每对点(i, j)count(i, j)将必须迭代H[ d[i][j] ]并计算该列表中的点,这些点i与和组成一个正方形j

在实践中,这应该运行得非常快,而且我认为它不会变得更糟O(n^3)(我什至不确定它是否会变得如此糟糕)。

解决方法

给定一个平面上的n个点,可以形成多少个正方形…?

我通过计算每个2个点之间的距离进行尝试,然后对其进行排序,然后在验证了点和坡度后查找具有四个或更多个相等距离的点中的正方形。

但这似乎是一种非常复杂的方法。还有其他想法吗?

我认为用于检查等距离线段的动态编程可能有用…但是无法完全理解这个想法....

还有更好的主意吗???

PS:平方可以是任何形式。它们可以重叠,有一个共同的一面,一个正方形内另一个…

如果可能,请提供示例代码以执行上述操作…

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。