查找线段上的等距点的最大数量

时间:2011-12-14 13:20:59

标签: algorithm math language-agnostic

给出直线段上的一组点。这些点可能位于线上的任何位置。我需要一个aglorithm来定期找到线上的最大点数。

例如在由y = 0表示的直线上,我可能有一些点,如:

[3,0], [1,0], [4,0], [7,0],[11,0], [10,0]

Output : 4 
     [1,0] , [4,0], [7,0], [10,0]

示例2:

[2,1], [2,5], [2,3], [2,7], [2,6]

Output: 4
    [2,1], [2,3],[2,5], [2,7]

[注意:该线可能有任何斜率。我只需要算法的草图。这些点可以被认为存储在二维矩阵中] 请帮忙。

2 个答案:

答案 0 :(得分:0)

这是伪代码中的暴力算法:

for each point X
  for each point Y != X
    find number of connected points from X using the distance between X and Y
  next Y
next X

如何使用X和Y之间的距离从X中找到连接点的数量:

dXY = Y - X
i = 0
while point_exists(X + i * dXY)
  i = i + 1
end while

答案 1 :(得分:0)

选择一个非零(或更宽)范围的坐标(例如第一个示例中的X),并按此坐标对您的集合进行排序。然后找到最长算术级数